# Enhanced Object Literals

# Concise Method

객체에서 메소드를 간결하게 작성하는 것을 의미합니다. function 키워드를 작성하지 않아도 됩니다.

// ES5
var user = {
  name: "Kim",
  getName: function () {
    return this.name;
  },
};

// ES6
let user = {
  name: "Kim",
  getName() {
    return this.name;
  },
};

# Shorthand Property

변수를 속성값으로 사용시 속성값을 축약할 수 있습니다.

// ES5
var name = "Kim";
var age = 34;
var user = {
  name: name,
  age: age,
};

// ES6
let name = "Kim";
let age = 34;
const user = {
  name,
  age,
};

# Computed property

표현식을 이용하여 객체의 키를 동적으로 생성하는 문법입니다. 기존에는 아래와 같은 문법을 적용할 수 없었습니다.

var name = "Kim";
var obj = {
  'my_' + name: "Sam", // Unexpected token '+'
  `my_${name}`: "Sam", // Unexpected template string
}

// ES6
let name = "Kim";
let obj = {
  [`my_${name}`]: "Kim",
};
console.log(obj); // { my_Kim: 'Kim' }

let funcName = "getName";
let name = "Kim";
let obj = {
  [`my_${name}`]: "Kim Hi",
  [funcName]() {
    console.log(this.my_Kim);
  },
};
obj.getName(); // Kim Hi