JavaScript : Object 1๏ธโƒฃ

m_ngyeongยท2023๋…„ 12์›” 19์ผ
0

JavaScript

๋ชฉ๋ก ๋ณด๊ธฐ
4/9
post-thumbnail

๐ŸŒ JavaScript


Object

Object(๊ฐ์ฒด)๋Š” ์ด๋ฆ„๊ณผ ๊ฐ’์„ ํ•œ ์Œ์œผ๋กœ ๋ฌถ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ๋ชจ์€ ๊ฒƒ์œผ๋กœ, 0๊ฐœ ์ด์ƒ์˜ property(ํ”„๋กœํผํ‹ฐ)๋กœ ๊ตฌ์„ฑ๋œ ์ง‘ํ•ฉ์ด๋‹ค.

โœ” property(ํ”„๋กœํผํ‹ฐ) : ๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’
โœ” method(๋ฉ”์„œ๋“œ) : ํ”„๋กœํผํ‹ฐ๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๋™์ž‘

๐Ÿ“Œ ํ”„๋กœํผํ‹ฐ ๊ฐ’์ด ํ•จ์ˆ˜์ผ ๊ฒฝ์šฐ์—๋Š” method๋ผ๊ณ  ๋ถ€๋ฆ„


Object Literal

Object Literal(๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด)์€ ์ค‘๊ด„ํ˜ธ({}) ๋‚ด์— 0๊ฐœ ์ด์ƒ์˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ •์˜ํ•œ๋‹ค.

let card = { suit: "ํ•˜ํŠธ", rank: "A" };

๐Ÿ“Œ ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด์˜ ์ค‘๊ด„ํ˜ธ๋Š” ์ฝ”๋“œ ๋ธ”๋ก์„ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ฐ’์œผ๋กœ ํ‰๊ฐ€๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ซ๋Š” ๊ด„ํ˜ธ ๋’ค์—๋Š” ์„ธ๋ฏธ์ฝœ๋ก (;)์„ ๋ถ™์ž„

Property

Property(ํ”„๋กœํผํ‹ฐ)๋Š” ๊ฐ์ฒด์— ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ ํ•˜๋‚˜๋ฅผ ๊ฐ€๋ฅดํ‚ค๋ฉฐ key(ํ‚ค)์™€ value(๊ฐ’)๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

  • ํ”„๋กœํผํ‹ฐ๋Š” ์‰ผํ‘œ(,)๋กœ ๊ตฌ๋ถ„
  • key์™€ value๋Š” ์ฝœ๋ก (:)์œผ๋กœ ๊ตฌ๋ถ„

โœ” key : ํ”„๋กœํผํ‹ฐ์˜ ์ด๋ฆ„, ๋ชจ๋“  ์‹๋ณ„์ž์™€ ๋นˆ ๋ฌธ์ž์—ด ํฌํ•จํ•œ ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด(์˜ˆ: suit, rank)
โœ” value : ํ”„๋กœํผํ‹ฐ์˜ ๊ฐ’, ๋ชจ๋“  ๋ฐ์ดํ„ฐ ํƒ€์ž…์˜ ๊ฐ’๊ณผ ํ‘œํ˜„์‹(์˜ˆ: ํ•˜ํŠธ, A)

let card = { "suit": "ํ•˜ํŠธ", "rank": "A" };

์ด๋ฏธ ์กด์žฌํ•˜๋Š” ํ”„๋กœํผํ‹ฐ ํ‚ค๋ฅผ ์ค‘๋ณต ์„ ์–ธํ•˜๋ฉด ๋‚˜์ค‘์— ์„ ์–ธํ•œ ํ”„๋กœํผํ‹ฐ๊ฐ€ ์ด์ „์˜ ๊ฒƒ์„ ๋ฎ์–ด์“ฐ๋ฉฐ ์—๋Ÿฌ๋„ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ

let me = {
  name: "Kim",
  name: "Lim",
};

console.log(me); // {name: 'Lim'}

Access Property

ํ”„๋กœํผํ‹ฐ ๊ฐ’์„ ์ฝ๊ฑฐ๋‚˜ ์“ฐ๊ธฐ ์œ„ํ•ด ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ•˜๋Š” 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.
โœ” Dot Notation(๋งˆ์นจํ‘œ ํ‘œ๊ธฐ๋ฒ•) : ๋งˆ์นจํ‘œ ํ”„๋กœํผํ‹ฐ ์ ‘๊ทผ ์—ฐ์‚ฐ์ž(.) ์‚ฌ์šฉ
โœ” Bracket Notation(๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•) : ๋Œ€๊ด„ํ˜ธ ํ”„๋กœํผํ‹ฐ ์ ‘๊ทผ ์—ฐ์‚ฐ์ž([ ]) ์‚ฌ์šฉ

let card = { suit: "ํ•˜ํŠธ", rank: "A" };

console.log(card.suit); // ํ•˜ํŠธ
console.log(card["rank"]); // A
  • ๊ฐ์ฒด์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ•˜๋ฉด undefined๋ฅผ ๋ฐ˜ํ™˜
console.log(card.color); // undefined
  • ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด ์•ˆ์— ์–ด๋– ํ•œ ํ”„๋กœํผํ‹ฐ๋„ ์ž‘์„ฑํ•˜์ง€ ์•Š์œผ๋ฉด ๋นˆ ๊ฐ์ฒด ์ƒ์„ฑ
let obj = {};
console.log(obj); // {}

๐Ÿ“Œ ๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์ ‘๊ทผ ์—ฐ์‚ฐ์ž ๋‚ด๋ถ€์— ์ง€์ •ํ•˜๋Š” ํ”„๋กœํผํ‹ฐ ํ‚ค๋Š” ๋ฐ˜๋“œ์‹œ ๋”ฐ์˜ดํ‘œ(" ")๋กœ ๊ฐ์‹ผ ๋ฌธ์ž์—ด์ด์–ด์•ผ ํ•จ

Property Add, Delete and 'in' Operator

Add Property

  • ์—†๋Š” ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์— ๊ฐ’์„ ๋Œ€์ž…ํ•˜๋ฉด ์ƒˆ๋กœ์šด ํ”„๋กœํผํ‹ฐ๊ฐ€ ์ถ”๊ฐ€ ๋จ
let card = { suit: "ํ•˜ํŠธ", rank: "A" };
card.color = "red";
console.log(card); // {suit: 'ํ•˜ํŠธ', rank: 'A', color: 'red'}

Delete Property

  • delete ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœํผํ‹ฐ ์‚ญ์ œ
delete card.rank;
console.log(card); //{suit: 'ํ•˜ํŠธ', color: 'red'}

'in' Operator

  • in ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด์— ํŠน์ • ํ”„๋กœํผํ‹ฐ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ
let card = { suit: "ํ•˜ํŠธ", rank: "A" };
console.log("suit" in card); // true
console.log("color" in card); // false

console.log("toString" in card); // true
// card๊ฐ€ Object๊ฐ์ฒด๋ฅผ ์ƒ์†๋ฐ›์•˜๊ธฐ ๋•Œ๋ฌธ

๐Ÿ“Œ in ์—ฐ์‚ฐ์ž๋Š” ๊ทธ ๊ฐ์ฒด๊ฐ€ ๊ฐ€์ง„ ํ”„๋กœํผํ‹ฐ์™€ ๊ทธ ๊ฐ์ฒด๊ฐ€ ์ƒ์†๋ฐ›์€ ๋ชจ๋“  ํ”„๋กœํ„ฐํ”ผ๋ฅผ ํ™•์ธ

Method

Method(๋ฉ”์†Œ๋“œ)๋Š” ๊ฐ์ฒด์˜ ์†์„ฑ์ธ, ์ฆ‰ ํ”„๋กœํผํ‹ฐ์˜ ์ €์žฅ๋œ ๊ฐ’์˜ ํƒ€์ž…์ธ ํ•จ์ˆ˜์ด๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฉ”์†Œ๋“œ๋Š” ๋ฉ”์†Œ๋“œ์— ์†ํ•œ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ ๊ฐ’์„ ๋ฐ”๊พธ๋Š” ์šฉ๋„๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

let circle = {
  center: { x: 1.0, y: 2.0 }, // ์›์˜ ์ค‘์ ์„ ํ‘œํ˜„ํ•˜๋Š” ๊ฐ์ฒด
  radius: 2.5, // ์›์˜ ๋ฐ˜์ง€๋ฆ„ 
  area: function () { // ์›์˜ ๋„“์ด๋ฅผ ๊ตฌํ•˜๋Š” ๋ฉ”์†Œ๋“œ
    return Math.PI * this.radius * this.radius;
  },
};

console.log(circle.area()); // 19.634954084936208
  • Method ๋˜ํ•œ ํ”„๋กœํผํ‹ฐ์˜ ์ผ์ข…์ด๋ฏ€๋กœ ๋‚˜์ค‘์— ๊ฐ์ฒด์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ
circle.translate = function (a, b) {
  this.center.x = this.center.x + a;
  this.center.y = this.center.y + b;
};

circle.translate(1, 2);
console.log(circle.center); // {x: 2, y: 4}

๐Ÿ“Œ this๋Š” ๊ทธ ํ•จ์ˆ˜๋ฅผ ๋ฉ”์„œ๋“œ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ด
(์œ„์˜ ์ฝ”๋“œ์—์„œ๋Š” circle๋ฅผ ๊ฐ€๋ฆฌํ‚ด)

Object is Reference Type

์ƒ์„ฑ๋œ ๊ฐ์ฒด๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ํ•œ ์˜์—ญ์„ ์ฐจ์ง€ํ•œ๋‹ค. ๊ฐ์ฒด๋ฅผ ๋ณ€์ˆ˜์— ๋Œ€์ž…ํ•˜๋ฉด ๊ทธ ๋ณ€์ˆ˜์—๋Š” ๊ฐ์ฒด์˜ ์ฐธ์กฐ, ๋ฉ”๋ชจ๋ฆฌ์—์„œ์˜ ์œ„์น˜ ์ •๋ณด๊ฐ€ ์ €์žฅ๋œ๋‹ค. ์ด๋•Œ์˜ ๋ณ€์ˆ˜ ์ƒํƒœ๋ฅผ ๊ฐ€๋ฆฌ์ผœ ๊ทธ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ํ‘œํ˜„ํ•œ๋‹ค.

let card = { suit: "ํ•˜ํŠธ", rank: "A" }; // ๊ฐ์ฒด๋ฅผ ๋ณ€์ˆ˜์— ๋Œ€์ž…, ๋ณ€์ˆ˜ card๋Š” ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ์Œ
let ref = card; // ๋ณ€์ˆ˜ reference๋Š” card์˜ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•จ

console.log(ref.suit); // ํ•˜ํŠธ

ref.suit = "์ŠคํŽ˜์ด๋“œ";
console.log(card.suit); // ์ŠคํŽ˜์ด๋“œ
console.log(ref.suit); // ์ŠคํŽ˜์ด๋“œ

๋”ฐ๋ผ์„œ ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด์—์„œ ๋ฐ์ดํ„ฐ์™€ ๊ทธ ์ƒํƒœ๋ฅผ ๋ฐ”๊พธ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ๋Š” ์šฉ๋„๋กœ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.



์ฐธ๊ณ ๋ฌธํ—Œ,
์ด์†Œ ํžˆ๋กœ์‹œ, ใ€Ž๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ž…๋ฌธใ€, ์„œ์žฌ์› ์—ญ, ๊ธธ๋ฒ—, 2019,
https://velog.io/@nxnaxx/Javascript-๊ฐ์ฒด-๋ฆฌํ„ฐ๋Ÿด

profile
์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ํ–ฅ์ƒ๊ณผ ์ง€์†์ ์ธ ์„ฑ์žฅ์„ ์ถ”๊ตฌํ•˜๋Š” ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž สšศ‰ษž

0๊ฐœ์˜ ๋Œ“๊ธ€