๐ ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๊ต์ฌ) 10์ฅ. ๊ฐ์ฒด ๋ฆฌํฐ๋ด
01. ๊ฐ์ฒด๋?
์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ฐ์ฒด(object) ๊ธฐ๋ฐ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ด๋ฉฐ, ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๊ตฌ์ฑํ๋ ๊ฑฐ์ "๋ชจ๋ ๊ฒ"์ด ๊ฐ์ฒด๋ค.
์์ ๊ฐ์ ์ ์ธํ ๋๋จธ์ง ๊ฐ(ํจ์, ๋ฐฐ์ด, ์ ๊ท ํํ์)์ ๋ชจ๋ ๊ฐ์ฒด๋ค.
- ๊ฐ์ฒด๋ ๋ณ๊ฒฝ ๊ฐ๋ฅํ ๊ฐ์ด๋ค.
- 0๊ฐ ์ด์์ ํ๋กํผํฐ๋ก ๊ตฌ์ฑ๋ ์งํฉ์ด๋ฉฐ, ํ๋กํผํฐ๋ ํค(key)์ ๊ฐ(value)์ผ๋ก ๊ตฌ์ฑ๋๋ค.
- ํ๋กํผํฐ์ ๊ฐ์ด ํจ์์ผ ๊ฒฝ์ฐ, ์ผ๋ฐ ํจ์์ ๊ตฌ๋ถํ๊ธฐ ์ํด ๋ฉ์๋(method)๋ผ ๋ถ๋ฅธ๋ค.
๊ฐ์ฒด๋ ๊ฐ์ฒด์ ์ํ๋ฅผ ๋ํ๋ด๋ ๊ฐ(ํ๋กํผํฐ)๊ณผ ํ๋กํผํฐ๋ฅผ ์ฐธ์กฐํ๊ณ ์กฐ์ํ ์ ์๋ ๋์(๋ฉ์๋)์ ๋ชจ๋ ํฌํจํ ์ ์์
-> ์ํ์ ๋์์ ํ๋์ ๋จ์๋ก ๊ตฌ์กฐํํ ์ ์์ด ์ ์ฉ.
02. ๊ฐ์ฒด ๋ฆฌํฐ๋ด์ ์ํ ๊ฐ์ฒด ์์ฑ
โป ํด๋์ค ๊ธฐ๋ฐ ๊ฐ์ฒด์งํฅ ์ธ์ด(C++๋ ์๋ฐ ๋ฑ) : ํด๋์ค๋ฅผ ์ฌ์ ์ ์ ์ํ๊ณ ํ์ํ ์์ ์ new ์ฐ์ฐ์์ ํจ๊ป ์์ฑ์๋ฅผ ํธ์ถํ์ฌ ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ ๋ฐฉ์์ผ๋ก ๊ฐ์ฒด ์์ฑ
โป ์ธ์คํด์ค : ํด๋์ค์ ์ํด ์์ฑ๋์ด ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ ์ค์ฒด - ๊ฐ์ฒด๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋์ด ์ค์ ๋ก ์กด์ฌํ๋ ๊ฒ์ ์ด์
โป ํด๋์ค : ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ธฐ ์ํ ํ ํ๋ฆฟ์ ์ญํ
โป ๊ฐ์ฒด๋ ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ํฌํจํ ๊ฐ๋
์๋ฐ์คํฌ๋ฆฝํธ๋ ํ๋กํ ํ์ ๊ธฐ๋ฐ ๊ฐ์ฒด์งํฅ ์ธ์ด๋ก, ๋ค์ํ ๊ฐ์ฒด ์์ฑ ๋ฐฉ๋ฒ์ ์ง์ํ๋ค.
๊ทธ ์ค ๊ฐ์ฒด ๋ฆฌํฐ๋ด์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด ๊ฐ์ฅ ์ผ๋ฐ์ ์ด๊ณ ๊ฐ๋จํ๋ค.
โป ๊ฐ์ฒด ๋ฆฌํฐ๋ด : ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํ ํ๊ธฐ๋ฒ
๐ฅ๏ธ ์์ ์ฝ๋
var person = {
name: 'Lee',
sayHello: function() {
console.log(`Hello! My name is ${this.name}.`);
}
};
console.log(typeof person); // object
console.log(person); // {name: "Lee", sayHello: f}
โ ๏ธ ์ฃผ์
๊ฐ์ฒด ๋ฆฌํฐ๋ด : ์ฝ๋ ๋ธ๋ก (X), ๊ฐ์ผ๋ก ํ๊ฐ๋๋ ํํ์ (O)
๋ฐ๋ผ์ ๊ฐ์ฒด ๋ฆฌํฐ๋ด์ ๋ซ๋ ์ค๊ดํธ ๋ค์๋ ์ธ๋ฏธ์ฝ๋ก ์ ๋ถ์ธ๋ค.
03. ํ๋กํผํฐ
๊ฐ์ฒด๋ ํ๋กํฐํผ์ ์งํฉ์ด๋ฉฐ, ํ๋กํผํฐ๋ ํค์ ๊ฐ์ผ๋ก ๊ตฌ์ฑ๋๋ค.
ํ๋กํผํฐ๋ฅผ ๋์ดํ ๋๋ ์ผํ(,)๋ก ๊ตฌ๋ถํ๋ค.
- ํ๋กํผํฐ ํค : ์๋ณ์ ์ญํ (๋น ๋ฌธ์์ด์ ํฌํจํ์ฌ ๋ชจ๋ ๋ฌธ์์ด ๋๋ ์ฌ๋ฒ ๊ฐ)
- ํ๋กํผํฐ ๊ฐ : ์๋ฐ์คํฌ๋ฆฝํธ์์ ์ฌ์ฉํ ์ ์๋ ๋ชจ๋ ๊ฐ
๐ฅ๏ธ ์์ ์ฝ๋
var person = {
// ํ๋กํผํฐ ํค๋ name, ํ๋กํผํฐ ๊ฐ์ 'Lee'
name: 'Lee',
// ํ๋กํผํฐ ํค๋ age, ํ๋กํผํฐ ๊ฐ์ 20
age: 20
};
โ ๏ธ ํ๋กํผํฐ ํค
- ์๋ณ์ ๋ค์ด๋ฐ ๊ท์น์ ๋ฐ๋ฅด๋ ๊ฒฝ์ฐ - ๋ฐ์ดํ ์๋ต ๊ฐ๋ฅ
- ์๋ณ์ ๋ค์ด๋ฐ ๊ท์น์ ๋ฐ๋ฅด์ง ์๋ ๊ฒฝ์ฐ - ๋ฐ๋์ ๋ฐ์ดํ ์ฌ์ฉ
- ์ด๋ฏธ ์กด์ฌํ๋ ํ๋กํผํฐ ํค ์ ์ธ - ๋ฎ์ด์
04. ๋ฉ์๋
ํ๋กํผํฐ ๊ฐ์ด ํจ์์ผ ๊ฒฝ์ฐ, ์ผ๋ฐ ํจ์์ ๊ตฌ๋ถํ๊ธฐ ์ํด ๋ฉ์๋(method)๋ผ ๋ถ๋ฅธ๋ค.
์ฆ, ๋ฉ์๋๋ ๊ฐ์ฒด์ ๋ฌถ์ฌ ์๋ ํจ์๋ฅผ ์๋ฏธํ๋ค.
๐ฅ๏ธ ์์ ์ฝ๋
var circle = {
radius: 5, // <- ํ๋กํผํฐ
// ์์ ์ง๋ฆ
getDiameter: function () { // <- ๋ฉ์๋
return 2 * this.radius; // <- this๋ circle ์ ๊ฐ๋ฆฌํจ๋ค.
}
};
console.log(circle.getDiameter()); // 10
05. ํ๋กํผํฐ ์ ๊ทผ
ํ๋กํผํฐ์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ
- ๋ง์นจํ ํ๊ธฐ๋ฒ : ๋ง์นจํ ํ๋กํผํฐ ์ ๊ทผ ์ฐ์ฐ์(.) ์ฌ์ฉ
- ๋๊ดํธ ํ๊ธฐ๋ฒ : ๋๊ดํธ ํ๋กํผํฐ ์ ๊ทผ ์ฐ์ฐ์([...]) ์ฌ์ฉ
๐ฅ๏ธ ์์ ์ฝ๋
var person = {
name: 'Lee'
};
// ๋ง์นจํ ํ๊ธฐ๋ฒ์ ์ํ ํ๋กํผํฐ ์ ๊ทผ
console.log(person.name); // Lee
// ๋๊ดํธ ํ๊ธฐ๋ฒ์ ์ํ ํ๋กํผํฐ ์ ๊ทผ
console.log(person['name']); // Lee
โ ๏ธ ๋๊ดํธ ํ๊ธฐ๋ฒ - ๋๊ดํธ ํ๋กํผํฐ ์ ๊ทผ ์ฐ์ฐ์ ๋ด๋ถ์ ์ง์ ํ๋ ํ๋กํผํฐ ํค๋ ๋ฐ๋์ ๋ฐ์ดํ๋ก ๊ฐ์ผ ๋ฌธ์์ด
โ ๏ธ ์ด๋, ๊ฐ์ฒด์ ์กด์ฌํ์ง ์๋ ํ๋กํผํฐ์ ์ ๊ทผํ๋ฉด undefined๋ฅผ ๋ฐํํ๋ค.
06. ํ๋กํผํฐ ๊ฐ ๊ฐฑ์
์ด๋ฏธ ์กด์ฌํ๋ ํ๋กํผํฐ ๊ฐ์ ํ ๋นํ๋ฉด ํ๋กํผํฐ ๊ฐ์ด ๊ฐฑ์ ๋๋ค.
๐ฅ๏ธ ์์ ์ฝ๋
var person = {
name: 'Lee'
};
person.name = 'Kim';
console.log(person); // {name: "Kim"}
07. ํ๋กํผํฐ ๋์ ์์ฑ
์กด์ฌํ์ง ์๋ ํ๋กํผํฐ์ ๊ฐ์ ํ ๋นํ๋ฉด ํ๋กํผํฐ๊ฐ ๋์ ์ผ๋ก ์์ฑ๋์ด ์ถ๊ฐ๋๊ณ ํ๋กํผํฐ ๊ฐ์ด ํ ๋น๋๋ค.
๐ฅ๏ธ ์์ ์ฝ๋
var person = {
name: 'Lee'
};
person.age = 20;
console.log(person): // {name: "Lee", age: 20}
08. ํ๋กํผํฐ ์ญ์
delete ์ฐ์ฐ์๋ฅผ ํตํด ๊ฐ์ฒด์ ํ๋กํผํฐ๋ฅผ ์ญ์ ํ ์ ์๋ค.
๐ฅ๏ธ ์์ ์ฝ๋
var person = {
name: 'Lee'
};
person.age = 20;
delete person.age;
// person ๊ฐ์ฒด์ address ํ๋กํผํฐ๊ฐ ์กด์ฌํ์ง ์๋๋ค.
// ํ์ง๋ง ์ด๋ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์๋๋ค.
delete person.address;
console.log(person); // {name: "Lee"}
๐ ์ฐธ๊ณ ์๋ฃ
[๋ฌด๋ฃ] ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฅ๋ค์ด๋ธ ์คํฐ๋ - ์ธํ๋ฐ | ๊ฐ์
ใ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฅ๋ค์ด๋ธใ ์ฑ ๋ด์ฉ์ ๊ทธ๋๋ก ๋ฐ๋ผ๊ฐ๋ ์คํฐ๋ ์์์ ๋๋ค. ํจ๊ป ๊ณต๋ถํ๋ฉด ํจ์ฌ ์ฌ์์ง ๊ฑฐ์์!, - ๊ฐ์ ์๊ฐ | ์ธํ๋ฐ
www.inflearn.com