객체 리터럴 프로퍼티 기능 확장

프로퍼티 축약 표현

// ES5  
var  x  =  1,  y  =  2;  
var  obj  =  {  
	x:  x,  
	y:  y  
};  
console.log(obj);  // { x: 1, y: 2 }

// ES6  
let  x  =  1,  y  =  2;  
const  obj  =  {  x,  y  };  
console.log(obj);  // { x: 1, y: 2 }

프로퍼티 키 동적 생성

// ES5  
var  prefix  =  'prop';  
var  i  =  0;  
var  obj  =  {};  
obj[prefix  +  '-'  +  ++i]  =  i;  
obj[prefix  +  '-'  +  ++i]  =  i;  
obj[prefix  +  '-'  +  ++i]  =  i;  console.log(obj);  // {prop-1: 1, prop-2: 2, prop-3: 3}

// ES6  
const  prefix  =  'prop';  
let  i  =  0;  
const  obj  =  {  
	[`${prefix}-${++i}`]:  i,  
	[`${prefix}-${++i}`]:  i,  
	[`${prefix}-${++i}`]:  i  
};  
console.log(obj);  // {prop-1: 1, prop-2: 2, prop-3: 3}

메소드 축약 표현

// ES5  
var  obj  =  {  
	name:  'Lee',  
	sayHi:  function()  {  
		console.log('Hi! '  +  this.name);  
	}  
};  
obj.sayHi();  // Hi! Lee

// ES6  
const  obj  =  {  
	name:  'Lee',  
	// 메소드 축약 표현  
	sayHi()  {  
		console.log('Hi! '  +  this.name);  
	}  
};  
obj.sayHi();  // Hi! Lee

proto 프로퍼티에 의한 상속

// ES5  
var  parent  =  {  
	name:  'parent',  
	sayHi:  function()  {  
		console.log('Hi! '  +  this.name);  
	}  
};  
// 프로토타입 패턴 상속  
var  child  =  Object.create(parent);  
child.name  =  'child';  
parent.sayHi();  // Hi! parent  
child.sayHi();  // Hi! child

// ES6  
const  parent  =  {  
	name:  'parent',  
	sayHi()  {  
		console.log('Hi! '  +  this.name);  
	}  
};  
const  child  =  {  
	// child 객체의 프로토타입 객체에 parent 객체를 바인딩하여 상속을 구현한다.  
	__proto__:  parent,  
	name:  'child'  
};  
parent.sayHi();  // Hi! parent  
child.sayHi();  // Hi! child