# ํฅ์๋ ๊ฐ์ฒด ๋ฆฌํฐ๋ด(Enhanced Object Literal)
ํฅ์๋ ๊ฐ์ฒด ๋ฆฌํฐ๋ด์ด๋ ๊ธฐ์กด ์๋ฐ์คํฌ๋ฆฝํธ์์ ์ฌ์ฉํ๋ ๊ฐ์ฒด ์ ์ ๋ฐฉ์์ ๊ฐ์ ํ ๋ฌธ๋ฒ์ ๋๋ค. ์์ฃผ ์ฌ์ฉํ๋ ๋ฌธ๋ฒ๋ค์ ์ข ๋ ๊ฐ๊ฒฐํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ๊ฐ์ฒด ์ ์ ํ์์ ๋ฐ๊ฟจ์ต๋๋ค.
# ๊ธฐ์กด ๊ฐ์ฒด ์ ์ ๋ฐฉ์
๊ธฐ์กด ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ฐ์ฒด ์ ์ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
var josh = {
// ์์ฑ: ๊ฐ
language: 'javascript',
coding: function() {
console.log('Hello World');
}
};
# ์ถ์ฝ ๋ฌธ๋ฒ 1 - ์์ฑ๊ณผ ๊ฐ์ด ๊ฐ์ผ๋ฉด 1๊ฐ๋ง ๊ธฐ์
๊ฐ์ฒด๋ฅผ ์ ์ํ ๋ ์์ฑ(property)์ ๊ฐ(value)์ด ๊ฐ์ผ๋ฉด ์๋์ ๊ฐ์ด ์ถ์ฝ์ด ๊ฐ๋ฅํฉ๋๋ค.
var language = 'javascript';
var josh = {
// language: language,
language
};
console.log(josh); // {language: "javascript"}
์์ ๊ฐ์ ์ถ์ฝ ๋ฌธ๋ฒ์ ๋ทฐ ์ปดํฌ๋ํธ ๋ฑ๋ก ๋ฐฉ์๊ณผ ๋ทฐ ๋ผ์ฐํฐ ๋ฑ๋ก ๋ฐฉ์์ ๋์ ํด๋ณด๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
// #1 - ์ปดํฌ๋ํธ ๋ฑ๋ก ๋ฐฉ์์์์ ์ถ์ฝ ๋ฌธ๋ฒ
const myComponent = {
template: '<p>My Component</p>'
};
new Vue({
components: {
// myComponent: myComponent
myComponent
}
});
// #2 - ๋ผ์ฐํฐ ๋ฑ๋ก ๋ฐฉ์์์์ ์ถ์ฝ ๋ฌธ๋ฒ
const router = new VueRouter({
// ...
});
new Vue({
// router: router,
router
});
# ์ถ์ฝ ๋ฌธ๋ฒ 2 - ์์ฑ์ ํจ์๋ฅผ ์ ์ํ ๋ function ์์ฝ์ด ์๋ต
๊ธฐ์กด์ ๊ฐ์ฒด๋ฅผ ์ ์ํ ๋ ๊ฐ์ฒด์ ์์ฑ์ ํจ์๋ฅผ ์ฐ๊ฒฐํ์ฌ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด ์๋์ ๊ฐ์ด ๋ง์ด์ฃ .
const josh = {
// ์์ฑ: ํจ์
coding: function() {
console.log('Hello World');
}
};
josh.coding(); // Hello World
์ค์ ๋ก ๊ธฐ๋ฅ์ ๊ตฌํํ๋ค๋ณด๋ฉด ์์ ๊ฐ์ด ์ ์ํด์ผ ํ ๋๊ฐ ๋๋ฌด ๋ง์ต๋๋ค. ๋ฐ๋ผ์, ES6์์๋ ์๋์ ๊ฐ์ด ์ถ์ฝํ์ฌ ์ฝ๋ฉํ๋ ๊ฒ์ ์ถ์ฒํฉ๋๋ค.
const josh = {
coding() {
console.log('Hello World');
}
};
josh.coding(); // Hello World
์ด๋ ๊ฒ function
์์ฝ์ด๋ฅผ ์๋ตํด๋ ๋์ผํ๊ฒ ๋์ํ๊ธฐ ๋๋ฌธ์ ํ์ดํ ํ๋ ์๊ฐ์ด ์ค์ด๋ญ๋๋ค.
๊ทธ๋ผ ์ด๋ฒ์๋ ๋ทฐ ์ฝ๋์ ์ ์ฉํด์ ์ผ๋ง๋ ํ์ดํ์ด ์ค์ด๋๋์ง ํ์ธํด๋ณผ๊น์?
new Vue({
// ...
methods: {
fetchData: function() {
// ...
},
showAlert: function() {
// ...
}
}
});
์์ ์ฝ๋๋ฅผ ์๋์ ๊ฐ์ด ์๋ตํ ์ ์์ต๋๋ค.
new Vue({
// ...
methods: {
fetchData() {
// ...
},
showAlert() {
// ...
}
}
});
โ Arrow Function Spread Operator โ