Object(๊ฐ์ฒด)๋ ์ด๋ฆ๊ณผ ๊ฐ์ ํ ์์ผ๋ก ๋ฌถ์ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ๊ฐ ๋ชจ์ ๊ฒ์ผ๋ก, 0๊ฐ ์ด์์ property(ํ๋กํผํฐ)๋ก ๊ตฌ์ฑ๋ ์งํฉ์ด๋ค.
โ property(ํ๋กํผํฐ) : ๊ฐ์ฒด์ ์ํ๋ฅผ ๋ํ๋ด๋ ๊ฐ
โ method(๋ฉ์๋) : ํ๋กํผํฐ๋ฅผ ์ฐธ์กฐํ๊ณ ์กฐ์ํ ์ ์๋ ๋์
๐ ํ๋กํผํฐ ๊ฐ์ด ํจ์์ผ ๊ฒฝ์ฐ์๋
method
๋ผ๊ณ ๋ถ๋ฆ
Object Literal(๊ฐ์ฒด ๋ฆฌํฐ๋ด)์ ์ค๊ดํธ({}
) ๋ด์ 0๊ฐ ์ด์์ ํ๋กํผํฐ๋ฅผ ์ ์ํ๋ค.
let card = { suit: "ํํธ", rank: "A" };
๐ ๊ฐ์ฒด ๋ฆฌํฐ๋ด์ ์ค๊ดํธ๋ ์ฝ๋ ๋ธ๋ก์ ์๋ฏธํ๋ ๊ฒ์ด ์๋๋ผ ๊ฐ์ผ๋ก ํ๊ฐ๋๊ธฐ ๋๋ฌธ์ ๋ซ๋ ๊ดํธ ๋ค์๋ ์ธ๋ฏธ์ฝ๋ก (
;
)์ ๋ถ์
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'}
ํ๋กํผํฐ ๊ฐ์ ์ฝ๊ฑฐ๋ ์ฐ๊ธฐ ์ํด ํ๋กํผํฐ์ ์ ๊ทผํ๋ 2๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค.
โ Dot Notation(๋ง์นจํ ํ๊ธฐ๋ฒ) : ๋ง์นจํ ํ๋กํผํฐ ์ ๊ทผ ์ฐ์ฐ์(.
) ์ฌ์ฉ
โ Bracket Notation(๋๊ดํธ ํ๊ธฐ๋ฒ) : ๋๊ดํธ ํ๋กํผํฐ ์ ๊ทผ ์ฐ์ฐ์([ ]
) ์ฌ์ฉ
let card = { suit: "ํํธ", rank: "A" };
console.log(card.suit); // ํํธ
console.log(card["rank"]); // A
console.log(card.color); // undefined
let obj = {};
console.log(obj); // {}
๐ ๋๊ดํธ ํ๊ธฐ๋ฒ์ ์ฌ์ฉํ ๋๋ ์ ๊ทผ ์ฐ์ฐ์ ๋ด๋ถ์ ์ง์ ํ๋ ํ๋กํผํฐ ํค๋ ๋ฐ๋์ ๋ฐ์ดํ(
" "
)๋ก ๊ฐ์ผ ๋ฌธ์์ด์ด์ด์ผ ํจ
let card = { suit: "ํํธ", rank: "A" };
card.color = "red";
console.log(card); // {suit: 'ํํธ', rank: 'A', color: 'red'}
delete
์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ํ๋กํผํฐ ์ญ์ delete card.rank;
console.log(card); //{suit: 'ํํธ', color: 'red'}
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(๋ฉ์๋)๋ ๊ฐ์ฒด์ ์์ฑ์ธ, ์ฆ ํ๋กํผํฐ์ ์ ์ฅ๋ ๊ฐ์ ํ์ ์ธ ํจ์์ด๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ฉ์๋๋ ๋ฉ์๋์ ์ํ ๊ฐ์ฒด์ ํ๋กํผํฐ ๊ฐ์ ๋ฐ๊พธ๋ ์ฉ๋๋ก ์ฌ์ฉํ๋ค.
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
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๋ฅผ ๊ฐ๋ฆฌํด)
์์ฑ๋ ๊ฐ์ฒด๋ ๋ฉ๋ชจ๋ฆฌ์ ํ ์์ญ์ ์ฐจ์งํ๋ค. ๊ฐ์ฒด๋ฅผ ๋ณ์์ ๋์ ํ๋ฉด ๊ทธ ๋ณ์์๋ ๊ฐ์ฒด์ ์ฐธ์กฐ, ๋ฉ๋ชจ๋ฆฌ์์์ ์์น ์ ๋ณด๊ฐ ์ ์ฅ๋๋ค. ์ด๋์ ๋ณ์ ์ํ๋ฅผ ๊ฐ๋ฆฌ์ผ ๊ทธ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๊ณ ์๋ค๊ณ ํํํ๋ค.
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-๊ฐ์ฒด-๋ฆฌํฐ๋ด