์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ฐ์ฒด ๊ธฐ๋ฐ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ด๋ฉฐ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ด๋ฃจ๊ณ ์๋ ๊ฑฐ์ "๋ชจ๋ ๊ฒ"์ด ๊ฐ์ฒด์ด๋ค. ๋ฐ๋ผ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ ๋ณตํ๊ธฐ ์ํด์๋ ๊ฐ์ฒด์ ๋ํด ์ ์๊ณ ์์ด์ผ ํ๋ค.
์ด๋ฒ ํฌ์คํ ์์๋ ๊ฐ์ฒด ์ ์ธ ๋ฐฉ์ ์ค ํ๋์ธ ๊ฐ์ฒด ๋ฆฌํฐ๋ด์ ๋ํด ์์๋ณด์.
ํด๋น ํฌ์คํ ์ https://developer.mozilla.org/ko/docs/Learn/JavaScript/Objects/Basics ๋ฅผ ์ฐธ์กฐํ์ฌ ์์ฑํ์์ต๋๋ค.
๊ฐ์ฒด๋ ๋ฌด์์ผ๊น? ๊ฐ์ฒด๋ ์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ฐ์ดํฐ๋ฅผ ํํํ๋ ๋ฐฉ์ ์ค ํ๋๋ก key,value ์์ผ๋ก ๊ตฌ์ฑ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ prototype ๊ธฐ๋ฐ ๊ฐ์ฒด์งํฅ ์ธ์ด๋ก์ ๋ค์ํ ๊ฐ์ฒด์์ฑ ๋ฐฉ๋ฒ์ ์ง์ํ๋ค.
- ๊ฐ์ฒด ๋ฆฌํฐ๋ด
- Object ์์ฑ์ ํจ์
- ์์ฑ์ ํจ์
- Object.create ๋ฉ์๋
- ํด๋์ค(ES6)
์ค๋์ ์ด์ค์์ ๊ฐ์ฒด ๋ฆฌํฐ๋ด์ ํตํ ๊ฐ์ฒด ์์ฑ์ ๋ํด ์์๋ณด๋๋ก ํ์!
๊ฐ์ฒด ๋ฆฌํฐ๋ด ๋ฐฉ์์ ๊ฐ์ฒด ์์ฑ ๋ฐฉ์ ์ค ๊ฐ์ฅ ์ผ๋ฐ์ ์ด๊ณ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ผ๋ก, ์ปจํ ์ธ ๋ฅผ ๊ทธ๋๋ก ๋์ ํ๋ ๋ฐฉ๋ฒ์ ๋งํ๋ค. (๊ฐ์ธ์ ์ผ๋ก๋ ๊ฐ์ฒด ๋ฆฌํฐ๋ด์ด๋ ๋ค์ด๋ฐ ์์ฒด๊ฐ ์ง๊ด์ ์ด์ง ์์ ๊ฒ ๊ฐ๋ค)
let myObject = {
member1Name: member1Value,
member2Name: member2Value,
member3Name: member3Value
};
์์ ํ์๊ณผ ๊ฐ์ด key : value ํ์์ data๋ฅผ ์ง์ ์ ๋ ฅํ๋ ๋ฐฉ๋ฒ์ด๋ค.
๊ทธ๋ฌ๋ฉด ์ด์ ๊ฐ์ฒด ๋ฆฌํฐ๋ด ๋ฐฉ์์ ํตํด์ Person์ด๋ ๊ฐ์ฒด๋ฅผ ์์ฑํด๋ณด์!
let person = {
name: ['Bob', 'Smith'],
age: 32,
gender: 'male',
interests: ['music', 'skiing'],
bio: function() {
console.log(`${this.name[0]} ${this.name[1]} is ${this.age} years old`);
},
greeting: function() {
console.log(`Hi! I'm ${this.name[0]}.`);
}
};
์์ person ๊ฐ์ฒด์์ bio์ greeting์ ํจ์์ด๋ค. ๊ฐ์ฒด๋ property๋ก ์ผ๋ฐ ๋ณ์ ๋ฟ๋ง ์๋๋ผ ํจ์ ๋ํ ๊ฐ์ง ์ ์๋ค.
๊ฐ์ฒด์ ๋ฌถ์ธ ํจ์๋ ๋ฉ์๋๋ผ๊ณ ํํํ๋ค.
๊ทธ๋ ๋ค๋ฉด ์ ์ธํ ํ๋กํผํฐ์ ์ด๋ป๊ฒ ์ ๊ทผ ํ ์ ์์๊น?
๊ฐ์ฒด์ ํ๋กํผํฐ์ ์ ๊ทผํ๋ ๋๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค.
๋ง์นจํ(.)๋ฅผ ํตํด ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ผ๋ก, person.name, person.age
์ ๊ฐ์ด ์ ๊ทผํ ์ ์๋ค.
๋๊ดํธ([])๋ฅผ ํตํด ์ ๊ทผํ๋ ๋ฐฉ์์ผ๋ก, persone['name'], persone['age']
์ ๊ฐ์ด ์ ๊ทผํ๋ค.
๋๊ดํธ๋ฅผ ์จ์ ์ ๊ทผํ ๊ฒฝ์ฐ ''์์ ๊ฐ์ธ์ฃผ์ง ์์ผ๋ฉด name์ด๋ ๋ณ์์ ๊ฐ์ผ๋ก ์ธ์ํ๊ธฐ ๋๋ฌธ์ ๊ผญ ๊ฐ์ธ์ฃผ์ด์ผ ํ๋ค.
๋ง์นจํ ํ๊ธฐ๋ฒ์ ์ด์ฉํด person ๊ฐ์ฒด์ ํ๋กํผํฐ์ ์ ๊ทผํด ๋ณด์๋ค. ๋ฉ์๋๋ ์ ๊ทผ ๋ฐฉ์์ ๋์ผํ๋ค.
์ด๋ฏธ ์กด์ฌํ๋ property์ ๊ฐ์ ์์ ํ๋ฉด ๊ฐฑ์ ๋๋ค. person.name = 'Brown'
๊ณผ ๊ฐ์ด ๊ฐ์ ๊ฐฑ์ ํ ์ ์๋ค.
์กด์ฌํ์ง ์๋ property์ ๊ฐ์ ํ ๋นํ๋ฉด ํ๋กํผํฐ๊ฐ ๋์ ์ผ๋ก ์์ฑ๋๋ค! person.address = 'Seoul'
์ฒ๋ผ ์๋ก์ด property๋ฅผ ํ ๋นํ ์ ์๋ค.
์ญ์ ํ๊ณ ์ ํ๋ property๋ฅผ delete ํค์๋๋ฅผ ๋ถ์ฌ ์ฌ์ฉํ๋ค. ์๋ property์ ์ ๊ทผํ์ ์์ ์๋ฌ์์ด ๋ฌด์๋๋ค. delete person.age
์ ๊ฐ์ด ์ญ์ ๊ฐ๋ฅํ๋ค.