Responsive Advertisement

JavaScript Objects: ๊ฐœ๋…๊ณผ ํ™œ์šฉ ๋ฐฉ๋ฒ•

JavaScript์—์„œ ๊ฐ์ฒด(Object)๋Š” ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž… ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๊ฐ์ฒด๋Š” ํ‚ค-๊ฐ’ ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋กœ, ๋‹ค์–‘ํ•œ ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” JavaScript ๊ฐ์ฒด์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ํ™œ์šฉ ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

JavaScript ๊ฐ์ฒด๋ž€?

๊ฐ์ฒด๋Š” ์—ฌ๋Ÿฌ ๊ฐ’์„ ํ•˜๋‚˜์˜ ๋‹จ์œ„๋กœ ๋ฌถ์–ด ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…์ž…๋‹ˆ๋‹ค. ๊ฐ์ฒด๋Š” key์™€ value์˜ ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์ฒด๋Š” ์ค‘๊ด„ํ˜ธ {}๋กœ ์ •์˜๋ฉ๋‹ˆ๋‹ค.

let person = {
    name: "John",
    age: 30,
    isAdult: true
};

์œ„ ์ฝ”๋“œ์—์„œ person ๊ฐ์ฒด๋Š” ์„ธ ๊ฐ€์ง€ ์†์„ฑ(name, age, isAdult)์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์†์„ฑ์€ ํ‚ค-๊ฐ’ ์Œ์œผ๋กœ ํ‘œํ˜„๋˜๋ฉฐ, ์†์„ฑ ๊ฐ’์€ ๋ฌธ์ž์—ด, ์ˆซ์ž, ๋ถˆ๋ฆฌ์–ธ ๋“ฑ ๋‹ค์–‘ํ•œ ํƒ€์ž…์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์ฒด ์†์„ฑ์— ์ ‘๊ทผํ•˜๊ธฐ

๊ฐ์ฒด์˜ ์†์„ฑ์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค: ์  ํ‘œ๊ธฐ๋ฒ•๊ณผ ๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค.

์  ํ‘œ๊ธฐ๋ฒ•

๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ, ๊ฐ์ฒด์˜ ์†์„ฑ์— ์ ‘๊ทผํ•  ๋•Œ ๊ฐ์ฒด๋ช….์†์„ฑ๋ช…์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

console.log(person.name);  // ๊ฒฐ๊ณผ: "John"
console.log(person.age);   // ๊ฒฐ๊ณผ: 30

๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•

๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•์€ ๊ฐ์ฒด๋ช…["์†์„ฑ๋ช…"] ํ˜•์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ, ์†์„ฑ๋ช…์ด ๋ณ€์ˆ˜๋กœ ์ €์žฅ๋œ ๊ฒฝ์šฐ ๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

console.log(person["name"]);  // ๊ฒฐ๊ณผ: "John"

let key = "age";
console.log(person[key]);   // ๊ฒฐ๊ณผ: 30

๊ฐ์ฒด ์†์„ฑ ์ถ”๊ฐ€ ๋ฐ ์ˆ˜์ •

๊ฐ์ฒด์˜ ์†์„ฑ์€ ์–ธ์ œ๋“ ์ง€ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์ฒด์— ์—†๋Š” ์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜, ๊ธฐ์กด ์†์„ฑ์„ ๋ฎ์–ด์”๋‹ˆ๋‹ค.

person.job = "Developer";  // ์ƒˆ๋กœ์šด ์†์„ฑ ์ถ”๊ฐ€
person.age = 31;             // ๊ธฐ์กด ์†์„ฑ ๊ฐ’ ์ˆ˜์ •

console.log(person);

์œ„ ์ฝ”๋“œ์—์„œ๋Š” job ์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜๊ณ , age ๊ฐ’์„ 31๋กœ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์ฒด ๋ฉ”์„œ๋“œ

JavaScript ๊ฐ์ฒด๋Š” ์†์„ฑ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ฉ”์„œ๋“œ(๊ฐ์ฒด์˜ ํ•จ์ˆ˜)๋„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์„œ๋“œ๋Š” ๊ฐ์ฒด์˜ ํ–‰๋™์„ ์ •์˜ํ•˜๋ฉฐ, ํ•จ์ˆ˜์ฒ˜๋Ÿผ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

let person = {
    name: "John",
    greet: function() {
        console.log("Hello, " + this.name);
    }
};

person.greet();  // ๊ฒฐ๊ณผ: "Hello, John"

์œ„ ์ฝ”๋“œ์—์„œ greet ๋ฉ”์„œ๋“œ๋Š” this ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ๊ฐ์ฒด์˜ name ์†์„ฑ์— ์ ‘๊ทผํ•˜๊ณ , ์ธ์‚ฌ๋ง์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. this๋Š” ํ˜ธ์ถœ๋œ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์ค‘์š”ํ•œ ํ‚ค์›Œ๋“œ์ž…๋‹ˆ๋‹ค.

๊ฐ์ฒด์™€ ๋ฐ˜๋ณต๋ฌธ

๊ฐ์ฒด์˜ ๋ชจ๋“  ์†์„ฑ์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, for...in ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฐ˜๋ณต๋ฌธ์€ ๊ฐ์ฒด์˜ ๋ชจ๋“  ์†์„ฑ์— ์ˆœ์ฐจ์ ์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

for (let key in person) {
    console.log(key + ": " + person[key]);
}

์œ„ ์ฝ”๋“œ๋Š” person ๊ฐ์ฒด์˜ ๋ชจ๋“  ์†์„ฑ ํ‚ค์™€ ๊ฐ’์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์ฒด์˜ ์†์„ฑ ์‚ญ์ œ

๊ฐ์ฒด์—์„œ ์†์„ฑ์„ ์‚ญ์ œํ•  ๋•Œ๋Š” delete ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

delete person.age;
console.log(person);  // ๊ฒฐ๊ณผ: age ์†์„ฑ์ด ์‚ญ์ œ๋œ ๊ฐ์ฒด

delete๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŠน์ • ์†์„ฑ์„ ๊ฐ์ฒด์—์„œ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์ฒด์˜ ์ฐธ์กฐ์™€ ๋ณต์‚ฌ

๊ฐ์ฒด๋Š” ์ฐธ์กฐ ํƒ€์ž…์œผ๋กœ, ๊ฐ์ฒด๋ฅผ ๋‹ค๋ฅธ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜๋ฉด ๊ฐ์ฒด ์ž์ฒด๊ฐ€ ์•„๋‹Œ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐ์ฒด๋ฅผ ๋ณต์‚ฌํ–ˆ์„ ๋•Œ ์›๋ณธ ๊ฐ์ฒด๊ฐ€ ์ˆ˜์ •๋  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

let obj1 = { name: "Alice" };
let obj2 = obj1;  // obj1์˜ ์ฐธ์กฐ๋ฅผ ๋ณต์‚ฌ

obj2.name = "Bob";
console.log(obj1.name);  // ๊ฒฐ๊ณผ: "Bob"

์œ„ ์˜ˆ์ œ์—์„œ obj2๋ฅผ ์ˆ˜์ •ํ•˜๋ฉด, obj1๋„ ํ•จ๊ป˜ ์ˆ˜์ •๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋‘ ๋ณ€์ˆ˜๊ฐ€ ๋™์ผํ•œ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ฐ์ฒด ๋ณต์‚ฌ ๋ฐฉ๋ฒ•

๊ฐ์ฒด๋ฅผ ์™„์ „ํžˆ ๋ณต์‚ฌํ•˜๋ ค๋ฉด Object.assign() ๋˜๋Š” ์Šคํ”„๋ ˆ๋“œ ์—ฐ์‚ฐ์ž(...)๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Object.assign()์„ ์‚ฌ์šฉํ•œ ๊ฐ์ฒด ๋ณต์‚ฌ

let obj1 = { name: "Alice" };
let obj2 = Object.assign({}, obj1);

obj2.name = "Bob";
console.log(obj1.name);  // ๊ฒฐ๊ณผ: "Alice"

์Šคํ”„๋ ˆ๋“œ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•œ ๊ฐ์ฒด ๋ณต์‚ฌ

let obj1 = { name: "Alice" };
let obj2 = { ...obj1 };

obj2.name = "Bob";
console.log(obj1.name);  // ๊ฒฐ๊ณผ: "Alice"

์œ„ ๋‘ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ์›๋ณธ ๊ฐ์ฒด์™€ ๋…๋ฆฝ์ ์ธ ๋ณต์‚ฌ๋ณธ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๋ก 

JavaScript ๊ฐ์ฒด๋Š” ๋ฐ์ดํ„ฐ์™€ ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ํ•จ๊ป˜ ๊ด€๋ฆฌํ•˜๋Š” ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๊ฐ์ฒด๋ฅผ ํ™œ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ €์žฅํ•˜๊ณ  ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฐ์ฒด์˜ ์†์„ฑ, ๋ฉ”์„œ๋“œ, ์ฐธ์กฐ ๋“ฑ์„ ์ž˜ ์ดํ•ดํ•˜๋ฉด ๋ณด๋‹ค ๊ตฌ์กฐ์ ์ธ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

JavaScript ๊ฐ์ฒด์˜ ๋‹ค์–‘ํ•œ ํ™œ์šฉ ๋ฐฉ๋ฒ•์„ ์ตํžˆ๊ณ  ์‹ค์ œ ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•ด๋ณด์„ธ์š”!

๋Œ“๊ธ€ ์“ฐ๊ธฐ