[TIL] 2022.04.22

Minsu Han·2022년 4월 22일
0

TODAY I LEARNED

목록 보기
38/46

오늘 한 일

  • 모던 자바스크립트 Deep Dive
  1. 클래스

배운 것

  • 클래스 선언문도 호이스팅이 발생한다. 단, let, const 키워드로 선언한 변수처럼 선언문 이전에 일시적 사각지대에 빠지기 때문에 호이스팅이 발생하지 않는 것처럼 동작한다
  • JS 클래스 몸체에서 정의할 수 있는 메서드는 constructor(생성자), 프로토타입 메서드, 정적 메서드의 세 가지가 있다
  • 프로토타입 메서드는 인스턴스로 호출해야 하므로 프로토타입 메서드 내부의 this는 프로토타입 메서드를 호출한 인스턴스를 가리킨다
  • 정적 메서드는 클래스로 호출해야 하므로 정적 메서드 내부의 this는 인스턴스가 아닌 클래스를 가리킨다
  • 따라서 this를 사용하지 않는 메서드는 정적 메서드로 정의하는 것이 좋다
  • constructor 내부의 this는 클래스가 생성한 인스턴스를 가리킨다
  • 인스턴스 프로퍼티는 언제나 public하지만, 현재 private한 프로퍼티를 정의할 수 있는 사양이 제안 중에 있다
  • 클래스의 접근자 프로퍼티는 프로토타입 프로퍼티다
  • 슈퍼클래스와 서브클래스는 인스턴스의 프로토타입 체인뿐 아니라 클래스 간의 프로토타입 체인도 생성한다. 이를 통해 프로토타입 메서드, 정적 메서드 모두 상속이 가능하다
  • super를 호출하면 슈퍼클래스의 constructor를 호출하고, super를 참조허면 슈퍼클래스의 메서드를 호출할 수 있다
  • ES6의 메서드 축약 표현으로 정의된 메서드는 내부 슬롯 [[HomeObject]]를 가지며, 자신을 바인딩하고 있는 객체의 프로토타입을 가리킨다.
profile
기록하기

0개의 댓글