ํฐ์คํ ๋ฆฌ ๋ทฐ
[JavaScript] ๊ฐ์ฒด ๋ฆฌํฐ๋ด
๊ฐ๋ฐ๊ฐ๊ตด๐ธ 2022. 7. 18. 16:53๊ฐ์ฒด๋?
์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ฐ์ฒด๊ธฐ๋ฐ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก, ์์ ๊ฐ์ ์ ์ธํ ๋ชจ๋ ๊ฐ์ ๊ฐ์ฒดํ์ ์ ๋๋ค. ์ด๋ ๋ค์ํ ํ์ ์ ๊ฐ์ ํ๋์ ๋จ์๋ก ๊ตฌ์ฑํ ๋ณตํฉ์ ์ธ ์๋ฃ๊ตฌ์กฐ๋ก ์์ ๊ฐ๊ณผ ๋ค๋ฅด๊ฒ ๋ณ๊ฒฝ ๊ฐ๋ฅํ ๊ฐ์ ๋๋ค.
๊ฐ์ฒด๋ฅผ ์ ์ํ์๋ฉด ํ๋กํผํฐ์ ๋ฉ์๋๋ก ๊ตฌ์ฑ๋ ์งํฉ์ฒด์ ๋๋ค.
- ํ๋กํผํฐ : ๊ฐ์ฒด์ ์ํ๋ฅผ ๋ํ๋ด๋ ๊ฐ. key๊ณผ value๋ก ๊ตฌ์ฑ.
- ๋ฉ์๋ : ํ๋กํผํฐ(์ํ ๋ฐ์ดํฐ)๋ฅผ ์ฐธ์กฐํ๊ณ ์กฐ์ํ ์ ์๋ ๋์.
var counter = {
num: 0,
increase() {
this.num++;
}
};
์์ ์์์ ๊ฐ์ด ๊ฐ์ฒด๋ ์ํ์ ๋์์ ํ๋์ ๋จ์๋ก ๊ตฌ์กฐํ ํ ์ ์์ด์ ์ ์ฉํฉ๋๋ค.
๊ฐ์ฒด ๋ฆฌํฐ๋ด์ ์ํ ๊ฐ์ฒด ์์ฑ
์๋ฐ์คํฌ๋ฆฝํธ๋ ํ๋กํ ํ์ ๊ธฐ๋ฐ ๊ฐ์ฒด์งํฅ ์ธ์ด๋ก์ ๋ค์ํ ๊ฐ์ฒด ์์ฑ ๋ฐฉ๋ฒ์ ์ง์ํฉ๋๋ค.
- ๊ฐ์ฒด *๋ฆฌํฐ๋ด
- Object ์์ฑ์ ํจ์
- ์์ฑ์ ํจ์
- Object.create ๋ฉ์๋
- ํด๋์ค(ES6)
*๋ฆฌํฐ๋ด : ์ฌ๋์ด ์ดํดํ ์ ์๋ ๋ฌธ์ ๋๋ ์ฝ์๋ ๊ธฐํธ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ ์์ฑํ๋ ํ๊ธฐ๋ฒ
๊ฐ์ฒด ๋ฆฌํฐ๋ด
๊ฐ์ฒด ๋ฆฌํฐ๋ด๋ฅผ ์ฌ์ฉํ์ฌ ํ๋กํผํฐ๋ฅผ ํฌํจ์์ผ ๊ฐ์ฒด๋ฅผ ์์ฑํจ๊ณผ ๋์์ ํ๋กํผํฐ๋ฅผ ๋ง๋ค ์ ์๊ณ ๋ํ ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ดํ์ ํ๋กํฐ๋ฆฌ๋ฅผ ๋์ ์ผ๋ก ์ถ๊ฐํ ์๋ ์์ต๋๋ค.
- ๊ฐ์ฒด ์์ฑ ๋ฐฉ๋ฒ ์ค ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ ๊ฐ์ฒด ๋ฆฌํฐ๋ด์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
- ์ค๊ดํธ({ ... }) ๋ด์ 0๊ฐ ์ด์์ ํ๋กํผํฐ๋ฅผ ์ ์
- ๋ณ์์ ํ ๋น๋๋ ์์ ์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ๊ฐ์ฒด ๋ฆฌํฐ๋ด์ ํด์ํด ๊ฐ์ฒด๋ฅผ ์์ฑ
- ์๋ฐ์คํฌ๋ฆฝํธ์ ์ ์ฐํจ๊ณผ ๊ฐ๋ ฅํจ์ ๋ํํ๋ ๊ฐ์ฒด ์์ฑ ๋ฐฉ์
var person = {
name: 'Lee'
};
console.log(typeof(person)); // object
console.log(person); // {name: "Lee"}
** ๊ฐ์ฒด์ {}๋ if๋ฌธ ๊ฐ์ ์ ์ด๋ฌธ์์ ์ฌ์ฉ๋๋ ์ฝ๋๋ธ๋ก์ ์๋ฏธํ์ง ์๊ณ ๊ฐ์ผ๋ก ํ๊ฐ๋๋ ํํ์์ ์๋ฏธํ๊ธฐ ๋๋ฌธ์ {}๋ค์๋ ์ธ๋ฏธ์ฝ๋ก ์ ๋ถ์ฌ์ผํฉ๋๋ค.
ํ๋กํผํฐ
๊ฐ์ฒด๋ ํ๋กํผํฐ์ ์งํฉ์ด๋ฉฐ, ํ๋กํผํฐ๋ ํค์ ๊ฐ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
ํ๋กํผํฐ ๊ฐ
์๋ฐ์คํฌ๋ฆฝํธ์์ ์ฌ์ฉํ ์ ์๋ ๋ชจ๋ ๊ฐ
ํ๋กํผํฐ ํค
- ๋น ๋ฌธ์์ด์ ํฌํจํ๋ ๋ชจ๋ ๋ฌธ์์ด ๋๋ ์ฌ๋ฒ ๊ฐ
- ํ๋กํผํฐ ๊ฐ์ ์ ๊ทผํ ์ ์๋ ์ด๋ฆ์ผ๋ก์ ์๋ณ์ ์ญํ
- ์๋ณ์ ๋ค์ด๋ฐ ๊ท์น์ ๋ฐ๋ฅด์ง ์๋ ์ด๋ฆ์๋ ๋ฐ๋์ ๋ฐ์ดํ๋ฅผ ์ฌ์ฉ
- ๋ฌธ์์ด ๋๋ ๋ฌธ์์ด๋ก ํ๊ฐํ ์ ์๋ ํํ์์ ์ฌ์ฉํด ํ๋กํผํฐ ํค๋ฅผ ๋์ ์ผ๋ก ์์ฑ ๊ฐ๋ฅ ([ํํ์])
- ๋ฌธ์์ด์ด๋ ์ฌ๋ฒ ๊ฐ ์ด์ธ์ ๊ฐ์ ์ฌ์ฉํ๋ฉด ์๋ฌต์ ํ์ ๋ณํ์ ํตํด ๋ฌธ์์ด์ด ๋จ
- ์์ฝ์ด๋ฅผ ํ๋กํผํฐ ํค๋ก ์ฌ์ฉํด๋ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์์
- ์ด๋ฏธ ์กด์ฌํ๋ ํ๋กํผํฐ ํค๋ฅผ ์ค๋ณต ์ ์ธํ๋ฉด ๋์ค์ ์ ์ธํ ํ๋กํผํฐ๊ฐ ๋จผ์ ์ ์ธํ ํ๋กํผํฐ๋ฅผ ๋ฎ์ด์
var person = {
lastName: 'Lee',
'fist-name': 'Ung-mo', // ์๋ณ์ ๋ค์ด๋ฐ ๊ท์น์ ์ค์ํ์ง ์๋ ํค ์ฌ์ฉ
age: 20,
0: 1 // ์๋ฌต์ ํ์
๋ณํ์ ํตํด key๊ฐ ๋ฌธ์์ด "0"์ด ๋จ
};
์์ ์ฝ๋์์ "lastName", "fist-name", "age", "0"์ ํค์ด๊ณ , "Lee", "Ung-mo", 20, 1์ ๊ฐ์ ๋ํ๋ ๋๋ค. ๋ํ ํ๋กํผํฐ๋ฅผ ๋์ดํ ๋๋ ,๋ก ๊ตฌ๋ถํฉ๋๋ค.
ํ๋กํผํฐ ๋์ ์์ฑ
์กด์ฌํ์ง ์๋ ํ๋กํผํฐ์ ๊ฐ์ ํ ๋นํ๋ฉด ํ๋กํผํฐ๊ฐ ๋์ ์ผ๋ก ์์ฑ๋์ด ์ถ๊ฐ๋๊ณ ํ๋กํผํฐ ๊ฐ์ด ํ ๋น๋ฉ๋๋ค.
var person = {
name: 'Lee'
};
person.age = 20;
console.log(person); // {name: "Lee", age: 20}
ํ๋กํผํฐ ์ญ์
delete์ฐ์ฐ์๋ฅผ ํตํด ํ๋กํผํฐ๋ฅผ ์ญ์ ํ ์ ์์ต๋๋ค.
var person = {
name: 'Lee',
age: 20
};
delete person.age;
console.log(person); // {name: "Lee"}
ES6์์ ์ถ๊ฐ๋ ๊ฐ์ฒด ๋ฆฌํฐ๋ด์ ํ์ฅ ๊ธฐ๋ฅ
ํ๋กํฐํผ ์ถ์ฝ ํํ
ํ๋กํผํฐ ๊ฐ์ ๋ณ์์ ํ ๋น๋ ๊ฐ(์๋ณ์ ํํ์)์ผ ์๋ ์์ต๋๋ค. ์ด๋, ES6์์๋ ๋ณ์ ์ด๋ฆ๊ณผ ํ๋กํผํฐ ํค๊ฐ ๋์ผํ ์ด๋ฆ์ผ๋ ํค๋ฅผ ์๋ตํ ์ ์์ต๋๋ค.
// ES5
var x1 = 1, y1 = 2;
var obj = {
x: x,
y: y
};
console.log(obj); // {x:1, y:2}
// ES6์ ํ๋กํผํฐ ์ถ์ฝ ํํ
let a = 1, b = 2;
const obj2 = {
a,
b
};
console.log(obj2); // {a:1, b:2}
๊ณ์ฐ๋ ํ๋กํผํฐ ์ด๋ฆ
ES5์์๋ ๋ฌธ์์ด ๋๋ ๋ฌธ์์ด๋ก ํ์ ๋ณํํ ์ ์๋ ๊ฐ์ผ๋ก ํ๊ฐ๋๋ ํํ์์ ์ฌ์ฉํด ๊ฐ์ฒด ๋ฆฌํฐ๋ด ์ธ๋ถ์์ ํ๋กํผํฐ ํค๋ฅผ ๋์ ์ผ๋ก ์์ฑํ ์ ์์์ต๋๋ค. ES6๋ถํฐ๋ ๊ฐ์ฒด ๋ฆฌํฐ๋ด ๋ด๋ถ์์๋ ๊ณ์ฐ๋ ํ๋กํผํฐ ์ด๋ฆ์ผ๋ก ํ๋กํผํฐ ํค๋ฅผ ๋์ ์์ฑํ ์ ์์ต๋๋ค.
// ES5
var prefix = 'prop';
var i = 0;
var obj = {};
obj[prefix + '-' + ++i] = i;
obj[prefix + '-' + ++i] = i;
console.log(obj); // {prop-1: 1, prop-2: 2}
// ES6์ ๊ณ์ฐ๋ ํ๋กํผํฐ ์ด๋ฆ์ผ๋ก ํค ๋์ ์์ฑ
const prefix = 'prop';
let i = 0;
const obj = {
[`${prefix} + '-' + ${++i}`] = i;
[`${prefix} + '-' + ${++i}`] = i;
};
console.log(obj); // {prop-1: 1, prop-2: 2}
๋ฉ์๋ ์ถ์ฝ ํํ
ES5์์ ๋ฉ์๋๋ฅผ ์ ์ํ๋ ค๋ฉด function ํค์๋๋ฅผ ํตํด ํ๋กํผํฐ ๊ฐ์ผ๋ก ํจ์๋ฅผ ํ ๋นํ์ผ๋, ES6์์๋ function ํค์๋๋ฅผ ์๋ตํ ์ถ์ฝ ํํ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
// ES5
var obj = {
name: 'Lee',
sayHi: function() {
console.log('Hi ' + this.name);
}
};
obj.sayHi(); // Hi Lee
//ES6์ ์ถ์ฝ ํํ
const obj = {
name: 'Lee',
sayHi() {
console.log('Hi ' + this.name);
}
};
obj.sayHi(); // Hi Lee
[์ถ์ฒ] ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ Deep Dive
'JavaScript > ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ Deep Dive' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript] ํจ์ (0) | 2022.07.19 |
---|---|
[JavaScript] ์์ ๊ฐ๊ณผ ๊ฐ์ฒด์ ๋น๊ต (0) | 2022.07.18 |
[JavaScript] ํ์ ๋ณํ๊ณผ ๋จ์ถ ํ๊ฐ (0) | 2022.07.15 |
[JavaScript] ์ ์ด๋ฌธ (0) | 2022.07.15 |
[JavaScript] ์ฐ์ฐ์ (0) | 2022.07.15 |
- Total
- Today
- Yesterday
- ๋ฐฑ์ค node.js
- ๋ ์์ปฌ ํ๊ฒฝ
- ์๋ฐ
- ํฌํฌ์ธํฐ
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ
- JavaScript
- ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ
- fp
- ๋คํธ์ํฌ
- ํ๋ก๊ทธ๋๋จธ์ค
- 2019 ์นด์นด์ค ๊ฐ๋ฐ์ ๊ฒจ์ธ ์ธํด
- ํ๋กํผํฐ
- ์ด์์ฒด์
- Baekjoon
- ์ด๋ถํ์
- TDD
- ์๋ฐ์คํฌ๋ฆฝํธ
- ์๊ณ ๋ฆฌ์ฆ
- ๋์์ธ ํจํด
- git
- ์ ์ญ ๋ณ์
- ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ deep dive
- map
- ์นด์นด์ค ์ธํด
- ๋ฐฑ์ค javascript
- ํ๋กํ ์ฝ
- http
- ์ฝ๋ฉํ ์คํธ
- ๋ฐฑ์ค
- ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |