all is well!!
12.๊ฐ์ฒด ๋ฆฌํฐ๋ด ๋ณธ๋ฌธ
๐ ๊ฐ์ฒด ?
JS๋ฅผ ๊ตฌ์ฑํ๋ ์์๊ฐ์ ์ ์ธํ ๊ฑฐ์ ๋ชจ๋ ๊ฒ(ํจ์, ๋ฐฐ์ด, ์ ๊ท ํํ์ ๋ฑ)์ด ๊ฐ์ฒด๋ค.
์ด๋ ๊ฒ ๊ฐ์ฒด์ ์งํฉ์ผ๋ก ํ๋ก๊ทธ๋จ์ ํํํ๋ ค๋ ํ๋ก๊ทธ๋๋ฐ์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ!
๊ทธ๋์
JS = ๊ฐ์ฒด์งํฅ
์์ ํ์
1. ๋จ ํ๋์ ๊ฐ๋ง ๋ํ๋ธ๋ค.
2. ์์ ํ์ ์ ๊ฐ์ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ๋ค.
๊ฐ์ฒด
1. ๋ค์ํ ํ์ ์ ๊ฐ์ ํ๋์ ๋จ์๋ก ๊ตฌ์ฑํ ๋ณตํฉ์ ์ธ ์๋ฃ๊ตฌ์กฐ.
2. ๊ฐ์ฒด๋ ๊ฐ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ๋ค.
๊ฐ์ฒด๋ 0๊ฐ ์ด์์ ํ๋กํผํฐ๋ก ๊ตฌ์ฑ๋ ์งํฉ.
ํ๋กํผํฐ๋ ํค(key)์ ๊ฐ(value)๋ก ๊ตฌ์ฑ๋๋ค.
var person = {
name : 'Lee', // ํ๋กํผํฐ
age : 20 // ํ๋กํผํฐ
};
// ํ๋กํผํฐ ํค : ํ๋กํผํฐ ๊ฐ
JS์์๋ ๋ชจ๋ ๊ฐ์ด ํ๋กํผํฐ ๊ฐ์ผ๋ก ๋ค์ด๊ฐ ์ ์๋๋ฐ,
ํ๋กํผํฐ ๊ฐ์ผ๋ก ํจ์๊ฐ ๋ค์ด๊ฐ๋ฉด '๋ฉ์๋'๋ผ๊ณ ๋ถ๋ฅธ๋ค.
var counter = {
num : 0, // ํ๋กํผํฐ : ์ํ๋ฅผ ๋ํ๋ด๋ ๊ฐ
increase : function () { // ๋ฉ์๋ : ํ๋กํผํฐ๋ฅผ ์ฐธ์กฐํ๊ณ ์กฐ์ํ ์ ์๋ ๋์
this.num++;
}
}
์ด๋ ๊ฒ ์ํ์ ๋์์ ํ๋์ ๋จ์๋ก ๊ตฌ์กฐํํ ์ ์์ด์ ์ ์ฉํ๋ค.
๐ ๊ฐ์ฒด ๋ฆฌํฐ๋ด์ ์ํ ๊ฐ์ฒด ์์ฑ
๋ฆฌํฐ๋ด : ์ฌ๋์ด ์ดํดํ ์ ์๋ ๋ฌธ์๋ ์ฝ์๋ ๊ธฐํธ๋ฅผ ์ฌ์ฉํด ๊ฐ์ ์์ฑํ๋ ํ๊ธฐ๋ฒ.
๊ฐ์ฒด ๋ฆฌํฐ๋ด : ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํ ํ๊ธฐ๋ฒ์ผ๋ก JS์ ์ ์ฐํจ๊ณผ ๊ฐ๋ ฅํจ์ ๋ํํ๋ ๊ฐ์ฒด ์์ฑ ๋ฐฉ์.
JS๋ ํ๋กํ ํ์ ๊ธฐ๋ฐ ๊ฐ์ฒด์งํฅ ์ธ์ด๋ก ๋ค์ํ ๊ฐ์ฒด ์์ฑ ๋ฐฉ๋ฒ์ ์ง์ํ๋ค.
1. ๊ฐ์ฒด ๋ฆฌํฐ๋ด
2. Object ์์ฑ์ ํจ์
3. ์์ฑ์ ํจ์
4. Object.create ๋ฉ์๋
5. ํด๋์ค(ES6)
์ด์ค ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ ๊ฐ์ฒด ๋ฆฌํฐ๋ด์ ์ฌ์ฉํ๋ ๊ฒ!
๊ฐ์ฒด ๋ฆฌํฐ๋ด์ ์ค๊ดํธ ๋ด์ 0๊ฐ ์ด์์ ํ๋กํผํฐ๋ฅผ ์ ์ํ๋ค.
๋ณ์์ ํ ๋น๋๋ ์์ ์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ๊ฐ์ฒด ๋ฆฌํฐ๋ด์ ํด์ํด ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
1.๊ฐ์ฒด ๋ฆฌํฐ๋ด์ ์ค๊ดํธ๋ ์ฝ๋ ๋ธ๋ก์ ์๋ฏธํ์ง ์๋๋ค.
2.๊ฐ์ผ๋ก ํ๊ฐ๋๋ ํํ์์ด๋ค.
๊ทธ๋์ ๊ฐ์ฒด ๋ฆฌํฐ๋ด์ ๋ซ๋ ์ค๊ดํธ์๋ ์ธ๋ฏธํด๋ก ;์ ๋ถ์ธ๋ค.
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 : function}
์ค๊ดํธ ๋ด์ ํ๋กํผํธ๋ฅผ ์ ์ํ์ง ์์ผ๋ฉด ๋น ๊ฐ์ฒด๊ฐ ์์ฑ๋๋ค.
var empty = {};
console.log(typeof empty) //object
๐ ํ๋กํผํฐ
๐ฃ ํ๋กํผํฐ ๊ฐ
์๋ฐ์คํฌ๋ฆฝํธ์์ ์ฌ์ฉํ ์ ์๋ ๋ชจ๋ ๊ฐ
๐ฃ ํ๋กํผํฐ ํค
1. ๋น ๋ฌธ์์ด์ ํฌํจํ๋ ๋ชจ๋ ๋ฌธ์์ด ๋๋ ์ฌ๋ฒ ๊ฐ์ ์ฌ์ฉ
2. ํ๋กํผํฐ ํค๋ ์๋ณ์ ์ญํ ์ ํ๋ค.
3. ๋ณดํต ""๋ก ๋ฌถ์ด์ ๋ฌธ์์ด์ ์ฌ์ฉํ๋๋ฐ JS์์ ์๋ณ์ ๋ค์ด๋ฐ ๊ท์น์ ๋ฐ๋ฅด๋ฉด ""๋ฅผ ์๋ตํ ์ ์๋ค.
4. ์๋ณ์ ๋ค์ด๋ฐ ๊ท์น์ ๋ฐ๋ฅด์ง ์์ผ๋ฉด ๋ฒ๊ฑฐ๋ก์ด ์ผ์ด ์๊ธธ ์ ์๊ธฐ ๋๋ฌธ์ ๊ท์น์ ์ค์ํ๋๊ฒ ์ข๋ค.
var person = {
firstName : 'Ung-mo', // ์๋ณ์ ๋ค์ด๋ฐ ์ค์
'last-name' : 'Lee' // ์๋ณ์ ๋ค์ด๋ฐ ์ค์ํ์ง ์์ (๋ฐ์ํ ์์ฐ๋ฉด ์๋ฌ!)
};
console.log(person); // {firstName: 'Ung-mo', last-name : 'Lee'}
5. ๋ฌธ์์ด ๋๋ ๋ฌธ์์ด๋ก ํ๊ฐํ๋ ํํ์์ ์ฌ์ฉํด ํค๋ฅผ ๋์ ์ผ๋ก ์์ฑํ ์๋ ์๋ค.
var obj = {};
var key = 'hello';
// ES5 : ํ๋กํผํฐ ํค ๋์ ์์ฑ
obj[key] = 'world';
// ES6 : ๊ณ์ฐ๋ ํ๋กํผํฐ ์ด๋ฆ
// var obj = {[key]: 'world'};
console.log(obj); // {hello : "world"}
6. ๋น ๋ฌธ์์ด์ ํค๋ก ์ฌ์ฉํด๋ ์๋ฌ๋ ๋ฐ์ํ์ง ์์ง๋ง ๊ถ์ฅํ์ง ์๋๋ค.
7. ์ด๋ฏธ ์กด์ฌํ๋ ํค๋ฅผ ์ค๋ณต ์ ์ธํ๋ฉด ๋์ค์ ์ ์ธํํค๋ก ๋ฎ์ด์์์ง๋ค. (์๋ฌ๋ ๋ฐ์ํ์ง ์๊ณ ์กฐ์ฉํ ๋์ด๊ฐ๊ธฐ ๋๋ฌธ์ ์ฃผ์๊ฐ ํ์)
var foo = {
name : 'Lee',
name : 'Kim'
}
console.log(foo); // {name : 'kim'}
๐ ๋ฉ์๋
๊ฐ์ฒด์ ๋ฌถ์ฌ ์๋ ํจ์.
JS์ ํจ์๋ ๊ฐ์ฒด์ด๊ธฐ ๋๋ฌธ์ ํจ์๋ ํ๋กํผํฐ ๊ฐ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
ํจ์๋ฅผ ํ๋กํผํฐ ๊ฐ์ผ๋ก ์ฌ์ฉํ ๋ ๋ฉ์๋๋ผ๊ณ ๋ถ๋ฅธ๋ค.
var person = {
name : 'Lee',
sayHello : function () { // ๋ฉ์๋
console.log(`Hello! My name is ${this.name}.`); // this๋ person์ ๊ฐ๋ฆฌํด.
}
};
console.log(typeof person); // object
console.log(person); // {name : "Lee", sayHello : function}
๐ ํ๋กํผํฐ ์ ๊ทผ
๐ฃ ํ๋กํผํฐ์ ์ ๊ทผ ํ๋ ๋ฐฉ๋ฒ
1. ๋ง์นจํ ํ๊ธฐ๋ฒ (.)
2. ๋๊ดํธ ํ๊ธฐ๋ฒ ([])
1. ๊ฐ์ฒด๋ก ํ๊ฐ๋๋ ํํ์.ํด๋น ๊ฐ์ฒด์ ํ๋กํผํฐ ํค
2. ๊ฐ์ฒด๋ก ํ๊ฐ๋๋ ํํ์['ํด๋น ๊ฐ์ฒด์ ํ๋กํผํฐ ํค']
// ๋๊ดํธ ํ๊ธฐ๋ฒ์ ๋ฌด์กฐ๊ฑด ๋ด๋ถ์ ๋ฐ์ดํ๋ก ํ๋กํผํฐ ํค๋ฅผ ๊ฐ์ธ์ค์ผ ํ๋ค.
// ๊ฐ์ธ์ง ์์ผ๋ฉด JS์์ง์ ์๋ณ์๋ก ํด์ํ๋ค.
ํ๋กํผํฐ ํค๊ฐ ์๋ณ์ ๋ค์ด๋ฐ ๊ท์น์ ์ค์ํ๋ฉด ์์ 2๊ฐ์ง ์ ๋ถ ์ฌ์ฉํ ์ ์๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ์ฒด์ ์กด์ฌํ์ง ์๋ ํ๋กํผํฐ์ ์ ๊ทผํ๋ฉด undefined๋ฅผ ๋ฐํํ๋ค.์ด ๋ํ ์๋ฌ๋ ๋ฐ์ํ์ง ์๋๊ฒ์ ์ฃผ์..
์๋ณ์ ๋ค์ด๋ฐ ๊ท์น์ ์ค์ํ์ง ์๋ ์ด๋ฆ์ ๋ฐ๋์ ๋๊ดํธ ํ๊ธฐ๋ฒ์ ์ฌ์ฉํด์ผ ํ๋ค!(ํ๋กํผํฐ ํค๊ฐ ์ซ์๋ก ์ด๋ค์ง ๋ฌธ์์ด์ผ ๊ฒฝ์ฐ๋ ๋ฐ์ดํ ์๋ต ๊ฐ๋ฅ)
๐ ํ๋กํผํฐ ๊ฐ ๊ฐฑ์
์ด๋ฏธ ์กด์ฌํ๋ ํ๋กํผํฐ์ ๊ฐ์ ํ ๋นํ๋ฉด ํด๋น ๊ฐ์ด ๊ฐฑ์ ๋๋ค.
var person = {
name : 'Lee'
};
person.name = 'Kim';
console.log(person); // {name : 'Kim'}
๐ ํ๋กํผํฐ ๋์ ์์ฑ
์กด์ฌํ์ง ์๋ ํ๋กํผํฐ์ ๊ฐ์ ํ ๋นํ๋ฉด ํ๋กํผํฐ๊ฐ ๋์ ์ผ๋ก ์์ฑ๋๊ณ ์ถ๊ฐ ๊ทธ๋ฆฌ๊ณ ๊ฐ ํ ๋น๊น์ง ๋๋ค.
var person = {
name : 'Lee'
};
person.age = 20; // ๋์ ์ถ๊ฐ
console.log(person); // {name : 'Lee', age : 20}
๐ ํ๋กํผํฐ ์ญ์
delete ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ค.
var person = {
name : 'Lee'
};
person.age = 20; // ๋์ ์์ฑ ๋ฐ ์ถ๊ฐ
delete person.age; // ์์์ age๋ฅผ ๋์ ์์ฑ ํ๊ธฐ ๋๋ฌธ์ ์กด์ฌํ๋ค. ๊ทธ๋์ ์ญ์ ๊ฐ๋ฅ.
delete person.address; // address ํ๋กํผํฐ๋ ์๋ค. ๊ทธ๋์ ๊ทธ๋ฅ ๋ฌด์ํ๋ค. (์๋ฌx)
console.log(person); // {name : 'Lee'}
๐ ES6 ๊ฐ์ฒด ๋ฆฌํฐ๋ด ํ์ฅ ๊ธฐ๋ฅ๋ค
๐ฃ ํ๋กํผํฐ ์ถ์ฝ ํํ
ํ๋กํผํฐ ๊ฐ์ ๋ณ์์ ํ ๋น๋ ๊ฐ์ผ ์๋ ์๋ค.
var x=1, y=2;
var obj = {
x : x,
y : y
};
console.log(obj); // {x:1, y:2}
ES6์์๋ ์ด๋ ํ๋กํผํฐ ํค์ ๋ณ์ ์ด๋ฆ์ด ๋์ผํ ๋ ํ๋กํผํฐ ํค๋ฅผ ์๋ตํด๋ ์๋ ์์ฑ๋๋ค.
var x=1, y=2;
var obj = { x, y };
console.log(obj); // {x:1, y:2}
๐ฃ ๊ณ์ฐ๋ ํ๋กํผํฐ ์ด๋ฆ
๋ฌธ์์ด ๋๋ ๋ฌธ์์ด๋ก ํ์ ๋ณํํ ์ ์๋ ๊ฐ์ผ๋ก ํ๊ฐ๋๋ ํํ์์ ์ฌ์ฉํด ํ๋กํผํฐ ํค๋ฅผ ๋์ ์์ฑ์ด ๊ฐ๋ฅํ๋ค.
๋์ []๋ก ๋ฌถ์ด์ผ ํ๋ค.
// ES5
var prefix = 'prop';
var i = 0;
var obj = {};
// ๊ณ์ฐ๋ ํ๋กํผํฐ ์ด๋ฆ์ผ๋ก ํค ๋์ ์์ฑ
obj[prefix + '-' + ++i] = i;
obj[prefix + '-' + ++i] = i;
obj[prefix + '-' + ++i] = i;
console.log(obj) // {prop-1 : 1, prop-2 : 2, prop-3 : 3}
ES6์์๋ ๊ฐ์ฒด ๋ฆฌํฐ๋ด ๋ด๋ถ์์๋ ๊ณ์ฐ๋ ํ๋กํผํฐ ์ด๋ฆ์ผ๋ก ํค๋ฅผ ๋์ ์์ฑ ๊ฐ๋ฅํ๋ค!
// ES6
var prefix = 'prop';
var i = 0;
// ๊ฐ์ฒด ๋ฆฌํฐ๋ด ๋ด๋ถ์์ ๊ณ์ฐ๋ ํ๋กํผํฐ ์ด๋ฆ์ผ๋ก ํ๋กํผํฐ ํค๋ฅผ ๋์ ์์ฑ
var obj = {
[`${prefix}-${++i} : i`],
[`${prefix}-${++i} : i`],
[`${prefix}-${++i} : i`]
};
console.log(obj) // {prop-1 : 1, prop-2 : 2, prop-3 : 3}
๐ฃ ๋ฉ์๋ ์ถ์ฝ ํํ
ES5๋ ์์์ ๊ณ์ ๋ดค๋๊ฒ์ฒ๋ผ ํ๋กํผํฐ ๊ฐ์ผ๋ก ํจ์๋ฅผ ํ ๋นํ๋ค.
var obj = {
name : 'Lee',
sayHello : function () { // ๋ฉ์๋
console.log(`Hello! My name is ${this.name}.`); // this๋ person์ ๊ฐ๋ฆฌํด.
}
};
obj.sayHello(); // Hello! My name is Lee
ES6๋ function ํค์๋๋ฅผ ์๋ตํ ์ ์๋ค.
var obj = {
name : 'Lee',
sayHello() { // ๋ฉ์๋
console.log(`Hello! My name is ${this.name}.`); // this๋ person์ ๊ฐ๋ฆฌํด.
}
};
obj.sayHello(); // Hello! My name is Lee
'Javascript ๊ณต๋ถ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| 14. JS ํจ์ (0) | 2023.07.21 |
|---|---|
| 13. ์์ ๊ฐ๊ณผ ๊ฐ์ฒด์ ๋น๊ต (0) | 2023.07.15 |
| 11. ํ์ ๋ณํ๊ณผ ๋จ์ถ ํ๊ฐ (0) | 2023.07.14 |
| 11. ์์ ํ์ ๊ณผ ๊ฐ์ฒด ํ์ ์ ์ฐจ์ด(์ฝ์คํ๊ณผ ํ) (0) | 2023.07.13 |
| 10. JS์ ์ ์ด๋ฌธ (0) | 2023.07.12 |