생성자 및 프로토타입 구현 상속의 결함
먼저 생성자 및 프로토타입 체인 상속 방법의 단점을 분석해 보겠습니다.
생성자(객체 가장)의 주요 문제점은 생성자 메서드를 사용해야 하며 프로토타입을 통해 정의된 메서드를 상속할 수 없다는 점입니다. 이는 최선의 선택이 아닙니다. 그러나 프로토타입 체인을 사용하는 경우 매개변수화된 생성자를 사용할 수 없습니다. 개발자는 어떻게 선택하나요? 대답은 간단합니다. 둘 다 사용하세요.
생성자 프로토타입 혼합 방법
이 상속 방법은 프로토타입을 사용하는 대신 생성자를 사용하여 클래스를 정의합니다. 클래스를 만드는 가장 좋은 방법은 생성자를 사용하여 속성을 정의하고 프로토타입을 사용하여 메서드를 정의하는 것입니다. 이 방법은 객체를 사용하여 생성자의 속성을 상속하는 척하고 프로토타입 체인을 사용하여 프로토타입 객체의 메서드를 상속하는 상속 메커니즘에도 적용됩니다. 이 두 가지 방법을 사용하여 이전 예제를 다시 작성합니다. 코드는 다음과 같습니다.
ClassA.prototype.sayColor = 함수() {
경고(this.color);
};
함수 ClassB(sColor, sName) {
ClassA.call(this, sColor);
this.name = sName;
}
ClassB.prototype = 새로운 ClassA();
ClassB.prototype.sayName = function () {
Alert(this.name);
};