Enhanced Object Literal
자바스크립트에서 객체는 리터럴(Literal) 형식 또는 선언적(Declarative) 형식으로 정의하는 방식과, 생성자 형식 두 가지 방법으로 정의할 수 있다.
const foo = 30;
const obj = {
foo: foo,
bar: function bar(){
console.log('Hello world');
}
};
console.log(obj.foo); // 30. Property Access
console.log(obj["foo"]); // 30. Key Access
obj.bar(); // Hello world
ES6에서부터는 문법이 좀 더 확장되었다. 객체 리터럴을 생성할 때 불필요한 반복 작업을 줄이고 조금 더 유연한 생성을 가능하게 한다.
const foo = 30;
const obj = {
// foo: foo 의 shorthand
foo,
// bar: function bar(){...}
bar() {
console.log('Hello world');
},
// Computed property. 프로퍼티 이름에 연산이 가능함
['' + (() => 'baz')()] : 'baz'
};
console.log(obj.foo); // 30
obj.bar(); // Hello world
console.log(obj.baz); // baz
참고
- Kyle Simpson, You don’t know JS
- MDN Web Docs
- Overview of ECMAScript 6 features