모던 자바스크립트 Deep Dive - 26장

박상은·2021년 10월 4일
0

요약

1. 함수

1.1 ES6이전 함수

모든 함수는 callable이면서 constructor이다.
즉, 호출가능하며, 생성자함수로 사용이 가능하다.

const person = {
  say: function (){
    console.log("Hello");
  }
}

// callable
person.say();
// constructor
new person.say();

1.2 ES6이후 함수

메서드 축약 표현으로 정의한 함수와 화살표 함수는 [[Constructor]][[Prototype]]이 없다.
대신 [[HomeObject]]가 존재해서 super가 사용이 가능하다. ( 상속받았을 경우 )

const parent = {
  say() {
    return "Hello";
  }
}
const children = {
  __proto__: parent,
  say(){
    return super.say() + ", Hi";
  }
}

2. 화살표 함수

  • 특징
    1. 생성자 함수로 사용 불가능
    2. 중복된 매개변수이름 사용 불가능
    3. 자체적으로 this, arguments, super, new.target값을 가지지 않음
    4. lexical this를 가짐

2.1 렉시컬 this

기본적으로 this값은 동적으로 결정된다.
그 의미는 함수 정의시점에서 결정되는 것이 아닌, 함수 호출시점에서 결정된다는 의미이다.

여기서 화살표함수의 this는 한가지 더 특이한 점을 가지는데 바로 자체적인 this값을 가지지 않는다는 것이다.
자체적인 this를 가지지 않고 상위 스코프의 this값을 그대로 참조한다. 이것을 렉시컬 this라고 부른다.

0개의 댓글