프로토타입 기반 상속: '새로운' 키워드의 역할 탐구
WeatherWidget이라는 새로운 함수로 Widget 클래스를 확장할 때, 프로토타입 할당:
WeatherWidget.prototype = new Widget;
중요한 역할을 합니다. 'new' 키워드는 위젯 생성자를 호출하고 해당 반환 값을 WeatherWidget의 프로토타입 속성에 할당합니다.
생략하면 이 작업으로 인해 오류가 발생하거나 전역 네임스페이스가 오염될 수 있습니다. 'new'를 사용하면 Widget 생성자가 호출되어 적절한 초기화와 유효한 반환 값이 보장됩니다.
그러나 이 접근 방식은 모든 WeatherWidget 인스턴스가 동일한 Widget 인스턴스에서 속성을 상속하여 서로 값을 공유하는 시나리오를 만듭니다. . 이는 상속 원칙에 부합하지 않을 수 있습니다.
이 문제를 수정하고 진정한 클래스 기반 상속을 구현하려면 다음 단계를 수행해야 합니다.
function Dummy () {} Dummy.prototype = Widget.prototype;
WeatherWidget.prototype = new Dummy();
WeatherWidget.prototype.constructor = WeatherWidget;
이 접근 방식은 WeatherWidget 인스턴스가 속성을 상속하도록 보장합니다. 서로 가치를 공유하지 않고 프로토타입 체인을 통해
ECMAScript Ed의 더 간결한 솔루션. 5 이상에서는 다음 사용을 고려하세요.
WeatherWidget.prototype = Object.create(Widget.prototype, { constructor: {value: WeatherWidget} });
또는 일반화된 상속 구현의 경우 Function.prototype.extend()를 탐색하세요. 이 방법을 사용하면 프로토타입 기능을 쉽게 확장할 수 있으며 상위 메서드 호출을 위한 편리한 '수퍼' 액세스 기능을 제공합니다.
위 내용은 'new' 키워드는 JavaScript의 프로토타입 기반 상속에 어떤 영향을 미치나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!