๐ Chapter 3 : ํน์ํ ์ปฌ๋ ์ ์ ์ด์ฉํด ์ฝ๋ ๋ช ๋ฃ์ฑ์ ๊ทน๋ํํ๋ผ.
๐ฏ ๊ฐ์ฒด๋ฅผ ์ด์ฉํด ์ ์ ์ธ ํค-๊ฐ์ ํ์ํ๋ผ.โ
- ๋ค์ ์์ ๋ ์ด๋ค ์๊น์ ์ฝ๋์ธ์ง ์๋๋ถํฐ ์์ง ๋ชปํ๋ฉด ๋ฌด์จ ์์ ๋ํ๋ด๋์ง ์ ์๊ฐ ์๋ค.
const colors = ['#d10202', '#19d836', '$0e33d8'];
- ์์ ๊ฐ์ ๊ฒฝ์ฐ์๋ ํค-๊ฐ ์ปฌ๋ ์ ์ ์ฌ์ฉํ์ฌ ์ ๋ณด์ ์๋ฏธ๋ฅผ ์ ์ดํด์์ผ์ค ์ ์๋ค.
- ๋ค์๊ณผ ๊ฐ์ด ์ค๊ดํธ์ ํค-๊ฐ์ ์์ฑํ๋ ๊ฒ์ ๊ฐ ์ฒด ๋ฆฌํฐ๋ด(object literal)์ด๋ผ๊ณ ํ๋ค.
const colors = {
red: '#d10202',
green: '#19d836',
blue: '$0e33d8'
}
- ๊ฐ์ฒด๋ ํ๋์ ์ปฌ๋ ์ ์ผ๋ก ์๊ฐํ๊ณ , ๋งต์ฒ๋ผ ๋ค๋ฅธ ์ปฌ๋ ์ ์ ๊ฒฝ์ ์๋๋ก ๋ด๋ณด๋ฉด, ๊ฐ์ฒด๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ์ ํํ ๊ฒ์ด ์๋๋ผ, ์ด๋ ํ ๊ฒฝ์ฐ์ ๊ฐ์ฒด๋ฅผ ์ ํํ๋ ๊ฒ์ด ์ต์ ์ผ์ง ์์์ผ ํ๋ค.
- ์์น์ ์ผ๋ก ๊ฐ์ฒด๋ ๋ณํ๊ฐ ์๊ณ ๊ตฌ์กฐํ๋ ํค-๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ๊ฒฝ์ฐ์ ์ ์ฉํ๋ค.
- ๋ฐ๋ฉด์ ์์ฃผ ๊ฐฑ์ ๋๊ฑฐ๋ ์คํ๋๊ธฐ ์ ์๋ ์ ์ ์๋ ๋์ ์ธ ์ ๋ณด๋ฅผ ๋ค๋ฃจ๊ธฐ์๋ ์ ํฉํ์ง ์๋ค.
- ์ด๋ ๋ฏ ๊ณ์ํด์ ๊ฐฑ์ , ๋ฐ๋ณต, ๋์ฒด, ์ ๋ ฌํด์ผ ํ ์ ๋ณด์๋ ๋งต์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ซ๋ค.
- ๊ทธ๋ ์ง๋ง ์ ์ ์ธ ๊ฐ์ฒด๋ ํ๋ก๊ทธ๋๋ฐ์ ์ผ๋ก ์ ์ํ ์ ์๋๋ฐ, ํจ์ ๋ด์์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ๋ค๋ฅธ ํจ์์ ๋๊ฒจ์ค ์ ์๋ค.
- ์ ๋ณด๋ฅผ ์์งํ๊ณ ์ ๋ฌํด ๋ค๋ฅธ ํจ์์์ ์ฌ์ฉํ๋ฉด ์กฐ์ํ๊ฑฐ๋ ๊ฐฑ์ ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ ์ ์ธ ์ ๋ณด๊ฐ ๋๋ ๊ฒ์ด๋ค.
- ๊ทธ ๋น๊ฒฐ์ ๋ฐ์ดํฐ๋ฅผ ๋งค๋ฒ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ค์ ํ๊ณ ์ฌ์ฉํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๊ธฐ์กด์ ๊ฐ์ฒด๋ฅผ ์กฐ์ํ๋ ๊ฒ์ด ์๋๋ผ ๊ฐ๊ฐ์ ํจ์์์ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
- ๋ํ, ๋ ์ค์ํ ๊ฒ์ ์ฝ๋๋ฅผ ์์ฑํ ๋ ํค๋ฅผ ์๊ณ ์๋ค๋ ์ ์ผ๋ก ๋ณ์๋ฅผ ์ด์ฉํด ํค๋ฅผ ์ค์ ํ์ง ์๊ณ ๊ฐ์ฒด๋ฅผ ์ ๋ฌ๋ฐ๋ ํจ์์์ ๊ตฌ์กฐ๋ฅผ ๋ฏธ๋ฆฌ ์๊ณ ์๋ค.
function getBill(item) {
return {
name: item.name,
due: twoWeeksFromNow(),
total: calculateTotal(item.price),
};
}
const bill = getBill({
name: '๊ฐ์ค ์ฒญ์',
price: 30,
});
function displayBill(bill) {
return `${bill.name} ๋น์ฉ์ ${bill.total} ๋ฌ๋ฌ์ด๋ฉฐ ๋ฉ๋ถ์ผ์ ${bill.due}์
๋๋ค.`;
}
๐ฏ Object.assign()์ผ๋ก ์กฐ์ ์์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ผ.โ
- ๊ฐ์ฒด๋ ๋ฐฐ์ด๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์กฐ์๊ณผ ๋ถ์ ํจ๊ณผ๋ก ์ธํ ๋ฌธ์ ์ ์ง๋ฉดํ ์ ์์ผ๋ฏ๋ก ์ฃผ์ํด์ผ ํ๋ค.
- ๊ฐ์ฒด์ ๋ฌด์ฌ์ฝ ํ๋๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ค์ ํ๋ฉด ๋ฌธ์ ๋ฅผ ๋ง๋ค ์๋ ์๋ค.
- ๊ธฐ๋ณธ๊ฐ์ ์ค์ ํ๋ฉด์, ์๋์ ๋ฐ์ดํฐ๋ฅผ ์ ์งํ๋ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ค๋ฉด ๋ถ์ ํจ๊ณผ๋ ์กฐ์์ ๋ฐ์ํ์ง ์์์ผ ํ๋ค.
- ์๋ ์์ ์ฝ๋๋ ์๋ชป๋ ๋ถ๋ถ์ ์์ง๋ง ์ฅํฉํ๋ค.
const defaults = {
author: '',
title: '',
year: 2017,
rating: null,
};
const book = {
author: '์ํ
์ฅํ๋ฆฌ',
title: 'The Little Prince',
};
function addBookDefaults(book, defaults) {
const fields = Object.keys(defaluts);
const updated = {};
for(let i = 0; i < fields.length; i++){
const field = fields[i];
updated[field] = book[field] || defaults[field];
}
return updated;
}
- ์์ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ฃผ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ES6๋
Object.assign()
์ ์๋กญ๊ฒ ์ถ๊ฐํด ๋ค๋ฅธ ๊ฐ์ฒด์ ํค-๊ฐ์ผ๋ก ๊ฐ์ฒด์ ํ๋๋ฅผ ์์ฑํ๊ณ ๊ฐฑ์ ํ ์ ์๋๋ก ํ๋ค. - ์ฆ,
Object.assign()
์ ์ด์ฉํ๋ฉด ๋ค๋ฅธ ๊ฐ์ฒด์ ์์ฑ์ ์ด์ฉํด์ ๊ฐ์ฒด๋ฅผ ๊ฐฑ์ ํ ์ ์๋ค. Object.assign()
์ ์๋ ์๋ฆฌ๋ ๋ฉ์๋๋ ์ผ๋ จ์ ๊ฐ์ฒด๋ฅผ ์ ๋ฌ๋ฐ๊ณ ๊ฐ์ฅ ๋จผ์ ์ธ์๋ก ๋ฐ์ ๊ฐ์ฒด๋ฅผ ๋ค์ด์ด ์ธ์๋ก ๋๊ธด ๊ฐ์ฒด์ ํค-๊ฐ์ ์ด์ฉํด์ ๊ฐฑ์ ํ๋ค.- ๊ทธ๋ฌ๊ณ ๋์ ๊ฐฑ์ ๋ ์ฒซ ๋ฒ์งธ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋๋ฐ ํธ์ถ ์ ์ธ์ ์์๋๋ก ์ ์ฉ๋๋ฏ๋ก, ๋จผ์ ์ ๋ฌํ ๊ฐ์ฒด๋ถํฐ ์ ์ฉ๋๊ณ ๊ฐ์ฅ ๋์ค์ ์ ๋ฌํ ๊ฐ์ฒด๊ฐ ๋งจ ๋ง์ง๋ง์ผ๋ก ์ ์ฉ๋๋ค.
- ์ ์์ ์ฝ๋์
addBookDefaults()
๋ฅผ ๋ค์ ์์ฑํ๋ฉด ๊ฐ๋จํ๊ฒ ์๋์ ๊ฐ์์ง๋ค.
Object.assign(defaults, book);
// {author: "์ํ
์ฅํ๋ฆฌ", title: "The Little Prince", year: 2017, rating: null}