[JavaScript] 계산된 프로퍼티명 Computed Property Names
참고 문서
테스트 환경 정보
- ES2015에서 최초 정의
- Chrome 60/Edge 79/Firefox 55/Opera 47/Safari 11.1 이상에서 사용 가능
- IE에서 사용 불가
개요
프로퍼티의 이름을 정의하는 새로운 방법을 정리한 글.
설명
{
[expression]: value
}
객체 리터럴의 프로퍼티명 자리에 대괄호[]
와 표현식의 조합으로 사용한다. expression
의 실행 결과가 프로퍼티의 이름이 된다.
var prop = 'bbyong';
var obj = {
[prop]: 123
};
obj; // Object { bbyong: 123 }
var obj = {
['ddi' + 'yong']: 456
};
obj; // Object { ddiyong: 456 }
var i = 0;
var obj = {
['idx' + i++]: i,
['idx' + i++]: i,
['idx' + i++]: i
};
obj; // Object { idx0: 1, idx1: 2, idx2: 3 }
var nm = 'waldo';
var obj = {
[nm.charAt(0).toUpperCase() + nm.slice(1)]: 'Hello there! Mighty fine morning'
};
obj; // Object { Waldo: "Hello there! Mighty fine morning" }
당연히 메서드명 또한 표현식으로 정의할 수 있다:
var obj = {
['john' + 'snow']: function () {
console.log('I know nothing.');
}
};
obj.johnsnow(); // I know nothing.
끝.