서브 클래스에서 기본 클래스의 생성자를 참조해야하는 이유는 무엇입니까? 어느 쪽이든 동일한 결과를 얻는 것 같습니다.
class Animal {
constructor(age) {
this.age = age;
}
}
class Mammal extends Animal {}
let lion = new Mammal(3);
lion.age //=> 3
반대로
class Mammal extends Animal {
constructor(){
super(3)
}
}
let lion = new Mammal();
lion.age //=> 3
명시 적 생성자를 제공하지 않으면 하위 클래스 1 에서 JavaScript 엔진이 다음과 같은 생성자 를 생성합니다.
constructor(...args) {
super(...args);
}
그것이 첫 번째 예에서 일어나는 일입니다. 그래서 이건:
class Mammal extends Animal {
}
다음과 같습니다.
class Mammal extends Animal {
constructor(...args) {
super(...args);
}
}
... 두 번째는 명시 적이지만 첫 번째는 JavaScript 엔진이 클래스에 삽입 한 생성자를 사용하는 것입니다.
이것은 §14.5.14의 10 단계 : 런타임 의미론 : ClassDefinitionEvaluation에 정의되어 있습니다 .
생성자 가 비어 있으면
ClassHeritage opt 가있는 경우
하자 생성자는 소스 텍스트를 구문 분석의 결과
constructor(... args){ super (...args);}
목표 기호 MethodDefinition 과 함께 구문 문법을 사용합니다 .
그밖에,
하자 생성자는 소스 텍스트를 구문 분석의 결과
constructor( ){ }
목표 기호 MethodDefinition 과 함께 구문 문법을 사용합니다 .
1 위에서 볼 수 있듯이 하위 클래스가 아닌 경우 constructor() { }
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다