ES5에서 객체 리터럴 키는 항상 문자열로 해석됩니다. ES6는 [myKey] 대괄호 구문을 사용하여 계산된 값을 객체 리터럴의 키로 사용할 수 있습니다.

[ 동적 객체 키 ]

1
2
3
4
5
const chosenAnimal = 'cat'
const animals = {
  [`animal${chosenAnimal}`]: true,
}
console.log(animals.animalcat) // true

[ 바벨로 컴파일된 코드 ]

1
2
3
4
5
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }

var chosenAnimal = 'cat';
var animals = _defineProperty({}, 'animal' + chosenAnimal, true);
console.log(animals.animalcat); // true