- class 문은 ES5의 편의 문법이 아닌 새로운 매커니즘인
new.target
을 중심으로 객체 생성 시스템을 만들어간다
new.target
new.target
이 모양 그대로 속성
function
이 호출되면 자동으로 new.target
속성을 갖게된다
- 화살표 함수는 경량 함수이기 때문에 arguments를 안가지는 것처럼 new.target도 안가진다
new.target
이란 속성은 new연산자로 생성한 경우
에만 해당 클래스를 가리키고 일반 함수로 호출
되는 경우는 undefined가 된다.
const Cls1 = function(){
console.log(new.target === Cls1);
};
new Cls1; //true
const Cls2 = class{
constructor(){
console.log(new.target == Cls2);
}
};
new Cls2; //true
상속
super를 이용한 상속
빌트인 객체 상속
결론
빌트인 객체를 상속할 수 있게 하자라는 대명제를 실현하려면 프로토타입으로는 무리
- 프로토타입은 함수가 반드시 생성자가 되므로
- 생성된 모든 객체는 생성자가 함수를 기반으로 하는 객체가 될 뿐 아니라
- 근본적으로 **
proto
**에 속성을 설정할 뿐이지 Object의 인스턴스
일 뿐입니다.
Class에서 빌트인 객체의 상속이 가능한 마법은 어디서 온 걸까
class
구문을 사용하면 부모가 없는 최초의 클래스는 기본 생성자
가 되고
- 상속받은 클래스는
파생 생성자
가 되어