๋ชฉ์ฐจ
2022.02.10 - [๐ | WEB DEV/Vanilla JS] - JS_๊ธฐ๋ณธ๋ฌธ๋ฒ (3)_๊ฐ์ฒด
๊ธฐ์กด์ ๋ค๋ฃจ์๋ JS์ ๊ฐ์ฒด์ ๋ํด์ ์กฐ๊ธ ๋ ์์๋ณด์!
1. ๊ฐ์ฒด ์์ฑ & ์ ๊ทผ
์์ ํฌ์คํธ์์ ๋ค๋ฃจ์๋ ๋๊ดํธ ํ๊ธฐ๋ฒ์ ๋ค์ํ ๋ฐฉ์์ผ๋ก ํ์ฉํ ์ ์๋ค.
1) ์๋ณ์ ๋ช ๋ช ๊ท์น์์ ๋ฒ์ด๋ ํค ์ด๋ฆ์ ์ ๊ทผ
const obj = {
'ab-1' : 100,
'c d' : 'Hello'
};
console.log(
obj['ab-1'],
obj['c d']
);
>>> 100
>>> 'Hello'
์์ฒ๋ผ ๋ช ๋ช ๊ท์น์ ์ด๊ธด ๊ฒฝ์ฐ์๋ ' '(๋ฐ์ดํ)๋ฅผ ์ด์ฉํ์ฌ ํค ์ด๋ฆ์ผ๋ก ์ค์ ํ๊ณ
์ด๋ฅผ ๋๊ดํธ ํ๊ธฐ๋ฒ์ผ๋ก ์ ๊ทผํ ์ ์๋ค.
2) ํํ์์ ์ด์ฉ
์ฐ์ฐ์ ํ์ฌ ํค๊ฐ์ผ๋ก ์ค์ ์ ํ ๊ฒฝ์ฐ์๋ ๋๊ดํธ๋ฅผ ์ด์ฉํ๋ค.
let idx = 0;
const obj = {
['user-' + ++idx] : `info-${idx}`,
['user-' + ++idx] : `info-${idx}`,
['user-' + ++idx] : `info-${idx}`,
}
console.log(obj);
>>> {user-1: 'info-1', user-2: 'info-2', user-3: 'info-3'}
3) ์ฃผ์!! ๊ฐ์ฒด๋ ๋ฐฐ์ด์ ํค ๊ฐ์ผ๋ก ์ฌ์ฉ??
๊ฐ์ฒด๋ ๋ฐฐ์ด์ ํค ๊ฐ์ผ๋ก ์ฌ์ฉํ์ฌ ๋ณด์.
const obj = {x: 1, y: 2};
const arr = [0, 1, 2];
const result = {
[obj] : '๊ฐ์ฒด',
[arr] : '๋ฐฐ์ด'
};
console.log(
result[obj],
result[arr],
);
>>> ๊ฐ์ฒด ๋ฐฐ์ด
์์ ๊ฒฐ๊ณผ๋ก ๋ณด์์ ๋ ๋ฌธ์ ๊ฐ ์๋ ๋ฏํ๋ค
ํ์ง๋ง ๋ค๋ฅธ ์์๋ฅผ ๋ณด์!
console.log(
result[{}],
result['0,1,2'],
);
>>> ๊ฐ์ฒด ๋ฐฐ์ด
์ด์ฒ๋ผ ์์ ๋ค๋ฅธ ๊ฐ๋ค์ ๋ฃ์์์๋ ๋ถ๊ตฌํ๊ณ ์์ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ค!
๊ทธ ์ด์ ๋ฅผ ์์๋ณด๋ฉด
console.log(
result
);
>>> {[object Object]: '๊ฐ์ฒด', 0,1,2: '๋ฐฐ์ด'}
๊ฐ์ฒด์ ๊ฒฝ์ฐ
๊ฐ์ฒด๋ฅผ ๋จ์ํ ๋ฌธ์์ด๋ก ์นํํ ๊ฐ( [object Object] ) ์ด ํค๊ฐ์ผ๋ก ์ ์ฅ๋์ด ์๋ค.
๋ฐ๋ผ์ ์๋ฌด ๊ฐ์ฒด๋ฅผ ๋ฃ์ด๋ ์ด ํค๊ฐ์ผ๋ก ์ ๊ทผ์ด ๋๋ค.
๋ฐฐ์ด์ ๊ฒฝ์ฐ
๋ฐฐ์ด ๋ด ์์๋ฅผ ์ผํ๋ก ์ด์ด๋ถ์ธ ๋ฌธ์์ด๋ก ์นํ๋๋ค.
์ฆ, ์ค์ ๊ฐ์ฒด๋ ๋ฐฐ์ด์ด ํค๊ฐ์ด ๋๋ ๊ฒ์ด ์๋๋ค.
๋ฐ๋ผ์ ๊ฐ์ฒด๋ ๋ฐฐ์ด์ ํค๊ฐ์ผ๋ก ํ์ฉํด์๋ ์๋๋ค.
4) ํค ๋์ ํ์ฉ
๋งค๊ฐ๋ณ์๋ฅผ ํตํด ๊ฐ์ฒด์ ํค๊ฐ์ ๋ฐ๊ณ ๊ทธ๋ฅผ ํ์ฉํ๋ ํจ์๋ฅผ ๋ง๋ค์ด๋ณด์.
๋๊ดํธ ํ๊ธฐ๋ฒ์ ์ด์ฉํ ํจ์์ ์ ํ๊ธฐ๋ฒ์ ์ฌ์ฉํ ํจ์๋ฅผ ๋น๊ตํ์ฌ ๋ณด์!
const obj = {
name : 'Kassid',
job : 'student',
major : 'Computer Engineering',
age : 25
};
function addProp1(prop, key, value){ //๋๊ดํธ ํ๊ธฐ๋ฒ ์ฌ์ฉ
prop[key] = value;
console.log(prop);
}
function addProp2(prop, key, value){ //์ ํ๊ธฐ๋ฒ ์ฌ์ฉ
prop.key = value;
console.log(prop);
}
1_ ๋๊ดํธ ํ๊ธฐ๋ฒ ํจ์ ์ฌ์ฉ์
addProp1(obj, grade, 3);
>>> {name: 'Kassid', job: 'student', major: 'Computer Engineering', age: 25, grade: 3}
์๋ํ ๋๋ก ์๋ก์ด ํ๋กํผํฐ๊ฐ ์์ฑ์ด ๋ ๊ฒ์ ์ ์ ์๋ค.
2_ ์ ํ๊ธฐ๋ฒ ํจ์ ์ฌ์ฉ์
addProp2(obj, 'grade', 3);
>>> {name: 'Kassid', job: 'student', major: 'Computer Engineering', age: 25, key: 3}
์๋ํ ๊ฒ๊ณผ ๋ค๋ฅด๊ฒ ํค์ ์ด๋ฆ์ด grade๊ฐ ์๋ key ๋ผ๋ ์ด๋ฆ์ผ๋ก ์์ฑ ๋์๋ค.
๋ฐ๋ผ์ ๋์ ์ผ๋ก ํค๋ฅผ ์ฌ์ฉํ ๋์๋ ๊ผญ ๋๊ดํธ๋ฅผ ํ์ฉํด์ผํ๋ค!
(์์ฑ ๋ฟ ์๋๋ผ ์ ๋ฐ์ดํธ, ์ญ์ ๋ ๊ฐ๋ฅํ๋ค.)
2. ES6 ๋ฌธ๋ฒ
๊ทธ๋์ ์ต์คํ๋ก์ด๋ก ์ธํด ์ ์ฌ์ฉํ์ง ๋ชปํ๋ ๋ฌธ๋ฒ๋ค์ ๋ํด์ ์์๋ณด์.
1) ๊ฐ์ฒด ์์ฑ ์ ํค์ด๋ฆ๊ณผ ๊ฐ์ ํด๋นํ๋ ๋ณ์/์์ ์ด๋ฆ์ด ๊ฐ์ ๊ฒฝ์ฐ
๋จผ์ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ๊ตฌํ์ ํด๋ณธ๋ค๋ฉด ์๋์ ๊ฐ๋ค.
์์ 1) ๊ธฐ์กด์ ๋ฐฉ๋ฒ
let x = 1;
let y = 2;
const obj = {
x : x,
y : y
};
console.log(obj);
>>> {x: 1, y: 2}
์์ 2) ES6 ๋ฌธ๋ฒ ํ์ฉ
const obj2 = {x, y};
console.log(x, y);
>>> {x: 1, y: 2}
์ด์ฒ๋ผ ๋๊ดํธ ์์ ๋ณ์/์์๋ฅผ ๋์ ํ๋ค๋ฉด
๊ทธ ์ด๋ฆ์ ํค๋ก ๊ฐ๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
์์ 3) ํจ์๋ก์ ํ์ฅ
function createObj(name, desc, price){
return {name, desc, price};
}
const bread1 = createObj('ํ๊น์๋ณด๋ก', '๋์ ์ฑ์ฌ๋น', 1500);
console.log(bread1);
>>> {name: 'ํ๊น์๋ณด๋ก', desc: '๋์ ์ฑ์ฌ๋น', price: 1500}
์ด๋ฅผ ์ด์ฉํ ํจ์๋ฅผ ๋ง๋ ๋ค๋ฉด ์์ ๊ฐ์ด ๊ตฌํํ ์ ์๋ค.
2) ๋ฉ์๋ (method)
๊ฐ์ฒด์ ์ถ์ฝ๋ ํํ์ผ๋ก ์ ์๋ ํจ์ ํ๋กํผํฐ๋ฅผ ๋ฉ์๋๋ผ๊ณ ์นญํ๋ค.
์ด๋ ์ฃผ์ํ ์ ์ ์ผ๋ฐ ํจ์ ํ๋กํผํฐ์ ๋ฉ์๋๋ ์ฐจ์ด๊ฐ ์๋ค.
case_1 ์ผ๋ฐํจ์ ํ๋กํผํฐ
const obj = {
say : function(isUser){
return isUser
? '์๋
ํ์ธ์. ์ฒ์ ์ค์
จ๊ตฐ์?'
: '์๋
ํ์ธ์. ๋ ์์ฃผ์
จ๊ตฐ์?'
}
}
console.log(obj.say(true));
>>> ์๋
ํ์ธ์. ์ฒ์ ์ค์
จ๊ตฐ์?
case_2 ๋ฉ์๋
const obj = {
say (isUser){
return isUser
? '์๋
ํ์ธ์. ์ฒ์ ์ค์
จ๊ตฐ์?'
: '์๋
ํ์ธ์. ๋ ์์ฃผ์
จ๊ตฐ์?'
}
}
console.log(obj.say(true));
>>> ์๋
ํ์ธ์. ์ฒ์ ์ค์
จ๊ตฐ์?
ES6 ์ดํ์๋ ์ด๋ฌํ ๋ฐฉ๋ฒ ๋ง์ ๋ฉ์๋๋ผ๊ณ ์นญํ๋ค.
์ผ๋ฐ ํจ์ ํ๋กํผํฐ์ ๋ฉ์๋๋ ํน์ฑ๊ณผ ๊ธฐ๋ฅ์ด ์กฐ๊ธ ๋ค๋ฅธ๋ฐ ์ด๋ ์ถํ์ ๋ค๋ค๋ณด๋๋ก ํ๊ฒ ๋ค!
'๐ | WEB DEV > Vanilla JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JS_๊ธฐ์ (3)_ Hoisting(ํธ์ด์คํ ) ๋ฟ์๊ธฐ (0) | 2023.03.31 |
---|---|
JS_๊ธฐ๋ณธ ๋ฌธ๋ฒ (24)_ ์์ฑ์ ํจ์ (0) | 2023.03.31 |
JS_๊ธฐ์ (2)_ IIFE(์ฆ์ ์คํ ํจ์ ํํ) (0) | 2023.03.16 |
JS_๊ธฐ๋ณธ ๋ฌธ๋ฒ (22)_ ๋งค๊ฐ๋ณ์ (๊ธฐ๋ณธ๊ฐ, arguments, ๋๋จธ์ง ๋ณ์, ์ด์์ ์ธ ํจ์?) (0) | 2023.03.12 |
JS_๊ธฐ์ (1)_ ์ปค๋ง(currying) (0) | 2023.03.11 |
๋๊ธ