Shorthand Properties
객체는 new Object()
, Object.create()
또는 리터럴(literal) 표기법(initializer 표기법)을 사용하여 초기화 될 수 있습니다. 객체 초기자(object initializer)는 0개 이상인 객체 속성명, 관련값 쌍 목록입니다.
ES6+ 부터 객체 초기자(initializer)에 메서드 정의를 위한 더 짧은 구문이 도입되었습니다.
이는 메서드 명에 할당된 함수를 위한 단축입니다.
영상 강의
PART 1
codepen
예제
속기형 속성 작성법을 사용하면 객체의 속성 정의가 편리해집니다.
var animations = ['원령 공주', '센과 치히로의 대모험', '명탐정 코난', '에반게리온'];
var movies = ['인디애나 존스', '살인자의 기억법', '범죄 도시'];
var music = [
{
song: '선물',
singer: '멜로망스'
},
{
song: '피카부 (Peek-A-Boo)',
singer: 'Red Velvet (레드벨벳)'
},
];
기존 코드는 객체의 속성과 값의 이름이 동일한 경우 값을 할당하기 위해 다음과 같이 작성했습니다.
var favorites = {
animations: animations,
movies: movies,
music: music
};
ES6+ 부터는 객체의 속기형 속성 방법을 사용해 보다 코드가 간결해집니다.
const favorites = { animations, movies, music };
// 또는
var favorites = {
animations,
movies,
music
};
코드 비교
ES6+의 기본 매개 변수, 화살표 함수식, 속기형 속성 작성법 등이 반영된 코드와 기존 코드를 비교해보세요.
ES5 코드
function isRequired(name) {
throw new Error(name + '전달인자는 필수입니다.');
}
function Mouse(name, weight, type) {
if (!name) { isRequired('name'); }
weight = weight || '100g';
type = type || 'Bluetooth';
return {
name: name,
weight: weight,
type: type
};
}
var magic_mouse_2 = new Mouse('Magic Mouse 2', '99g');
var mx_ergo = new Mouse('MX ERGO', '2g');
ES6+ 코드
const isRequired = name => new Error(`${name} 전달인자는 필수입니다.`);
function Mouse( name=isRequired('name'), weight='100g', type='bluetooth' ) {
return { name, weight, type };
}
const magic_mouse_2 = new Mouse('Magic Mouse 2', '99g');
const mx_ergo = new Mouse('MX ERGO', '2g');