JavaScript | [모딥다] 26장 ES6 함수의 추가 기능

bubblegum·2024년 3월 22일

JavaScript

목록 보기
12/12
post-thumbnail

함수의 구분

  • ES6 이전의 함수는 사용 목적에 따라 명확히 구분되지 않는다.
  • callable 이면서 constructor다.

ES6에서 함수를 사용 목적에 따라 세 가지 종류로 구분함

  • 일반함수: constructor/prototype/arguments
  • 메서드: super/arguments
  • 화살표 함수: 다 안됨.

1. 메서드

const obj = {
  x: 1, 
  foo() { return this.x; }, 
  bar: function() { return this.x; } // bar는 obj의 메서드
}; 
  • 메서드 축약 표현으로 정의된 함수.
  • 인스턴스를 생성할 수 없는 non-constructor다.
  • 인스턴스를 생성할 수 없으므로 prototype 프로퍼티가 없고 prototype도 생성하지 않음.
  • 자신을 바인딩한 객체를 가리키는 내부 슬롯 [[HomeObject]] 을 가짐. super 참조는 내부 슬롯 [[HomeObject]] 를 사용하여 수퍼클래스의 메서드를 참조하므로 내부 슬롯 [[HomeObject]]를 갖는 ES6 메서드는 super 키워드를 사용할 수 있음.
  • ES6 메서드가 아닌 함수는 super 키워드를 사용할 수 없음. 내부 슬롯 [[HomeObject]] 를 갖지 않기 때문.
const base = {
  name: 'Lee',
  sayHi() {
    return `Hi! ${this.name}` 
  }
}

const derived = {
  __proto__: base, 
 
  // 내부 슬롯 [[HomeObject]]를 가짐
  sayHi() {
    return `${super.sayHi()}. How are you doing?`;
  }
}
profile
황세민

0개의 댓글