JavaScript ES6 정리 - shorthand property, concise methods

JavaScript ES6 정리 - shorthand property, concise methods

이번 포스팅에서는 ES6에서 향상된 객체의 기능들에 대해 알아보자!

shorthand property

프로퍼티 축약이라고 불린다.

ES6를 사용해본 사람이라면 어떤 기능인지 바로 알 수 있을 것이다.

바로 코드부터 보며 어떤 기능인지 확인해보자 !

shorthand property 사용 전

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

우리는 객체 내부의 값을 프로퍼티(property)라고 하며, key : value로 구성된다.

ES6 이전에는 key와 value에 할당할 변수명이 같을 때 위의 예시와 같이 할당하였다.

shorthand property 사용 후

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

ES6에서 추가된 shorthand property를 사용하면 위와 같이 key와 value에 할당할 변수명이 같을 때 value를 생략할 수 있다.

그 결과, const x = 1에서 변수명 x와 해당 값이 할당된 것을 확인할 수 있다.

concise methods

말 그대로 객체 내에서 좀 더 간결하게 메소드를 사용할 수 있는 방법이다. 바로 코드를 보자!

concise methods 사용 전

var obj ={
  name: 'Jinsoo Lee',
  getName: function () { return this.name }
}
console.log(obj.getName());
/*
Result
Jinsoo Lee
*/

concise methods 사용 후

const obj ={
  name: 'Jinsoo Lee',
  getName () { return this.name }
}
console.log(obj.getName());
/*
Result
Jinsoo Lee
*/

키워드 : function를 제거해도 동일하게 사용할 수 있다.

예제를 보며 차이점을 더 공부해보자!

위 코드에서 각각 console.log(obj.getName)를 한 결과이다.

첫 번째 결과에서는 null로 값이 할당된 것을 확인할 수 있고 concise method를 사용한 아래 함수에서는 arguments : (...), caller : (...) 처리가 되어 있는 것을 볼 수 있다.

(...)를 클릭하며 호출하여야만 값을 알 수 있는데 클릭을 하면 오류가 난다!

이는 실행 환경 당시에서 값에 접근하는 것이 아니라 외부 스코프에서 이미 함수가 종료된 이후에 접근하려고 하여 오류가 나는 것이다.

또 다른 차이점으로는 concise method를 사용한 아래 함수는 prototype이 존재하지 않아, 생성자 함수를 사용할 수 없는 것이다.

ES6에서는 디버깅을 쉽게 하기 위해서 Error를 출력해주고,

함수는 함수로서의 기능만 수행하기 위해 생성자 함수로서의 기능을 제한했다고 이해하고 넘어가면 된다!

본 포스팅은 인프런 강의 Javascript ES6+ 제대로 알아보기를 공부하며 정리한 포스팅입니다!