holdanddeepdive/javascript-deep-dive

25장 클래스 정리

Opened this issue · 1 comments

25.1

  • 자바스크립트에서 클래스는 함수이지만 생성자 함수와 동일하게 동작하지 않는다. 클래스가 더 엄격하며 추가적인 기능이 있다.
  • _단순한 문법적 설탕보다 새로운 객체 생성 메커니즘으로 보는 것_이 더 합당하다.

25.3

  • 클래스는 함수로 평가되믈 런타임 이전에 먼저 평가되어 함수 객체를 생성한다.
  • 클래스 선언문 이전에 일시적 사각지대에 빠지므로 호이스팅이 발생하지 않는 것처럼 동작한다.

25.4

  • 클래스는 인스턴스를 생성하는 것이 존재 이유이므로 반드시 new 연산자와 함께 호출해야 한다.

25.5

  • return 문에 명시한 객체가 반환되므로 별도의 반환문을 갖지 않아야 한다.
  • 메소드에 static을 붙이면 정적 메소드가 된다. 정적 메소드와 프로토타입 메소드는 자신이 속해있는 프로토타입 체인이 다르다.

25.7

  • 필드 앞에 #은 private 필드를 의미한다.

25.8

  • 서브클래스에서 constructor를 생략하지 않는 경우 서브클래스의 constructor에서는 반드시 super를 호출해야 한다.
  • [[HomeObject]]를 가지는 함수만이 super 참조를 할 수 있다.

Atricles

Javascript classes are harmful

https://calvin.hashnode.dev/javascript-classes-are-harmful

  • 클래스 상속은 재사용 가능한 코드를 만들기 어렵게 한다.
  • this 바인딩에 오류를 범할 수 있다.
  • 객체를 반환하는 팩토리 함수 패턴을 사용하라.