>웹 프론트엔드 >JS 튜토리얼 >'new' 키워드는 JavaScript의 프로토타입 기반 상속에 어떤 영향을 미치나요?

'new' 키워드는 JavaScript의 프로토타입 기반 상속에 어떤 영향을 미치나요?

Barbara Streisand
Barbara Streisand원래의
2024-12-14 15:34:22879검색

How Does the `new` Keyword Impact Prototype-Based Inheritance in JavaScript?

프로토타입 기반 상속: '새로운' 키워드의 역할 탐구

WeatherWidget이라는 새로운 함수로 Widget 클래스를 확장할 때, 프로토타입 할당:

WeatherWidget.prototype = new Widget;

중요한 역할을 합니다. 'new' 키워드는 위젯 생성자를 호출하고 해당 반환 값을 WeatherWidget의 프로토타입 속성에 할당합니다.

생략하면 이 작업으로 인해 오류가 발생하거나 전역 네임스페이스가 오염될 수 있습니다. 'new'를 사용하면 Widget 생성자가 호출되어 적절한 초기화와 유효한 반환 값이 보장됩니다.

그러나 이 접근 방식은 모든 WeatherWidget 인스턴스가 동일한 Widget 인스턴스에서 속성을 상속하여 서로 값을 공유하는 시나리오를 만듭니다. . 이는 상속 원칙에 부합하지 않을 수 있습니다.

이 문제를 수정하고 진정한 클래스 기반 상속을 구현하려면 다음 단계를 수행해야 합니다.

  1. 더미 개체 생성:
function Dummy () {}
Dummy.prototype = Widget.prototype;
  1. 할당 프로토타입:
WeatherWidget.prototype = new Dummy();
  1. 생성자 수정:
WeatherWidget.prototype.constructor = WeatherWidget;

이 접근 방식은 WeatherWidget 인스턴스가 속성을 상속하도록 보장합니다. 서로 가치를 공유하지 않고 프로토타입 체인을 통해

ECMAScript Ed의 더 간결한 솔루션. 5 이상에서는 다음 사용을 고려하세요.

WeatherWidget.prototype = Object.create(Widget.prototype, {
  constructor: {value: WeatherWidget}
});

또는 일반화된 상속 구현의 경우 Function.prototype.extend()를 탐색하세요. 이 방법을 사용하면 프로토타입 기능을 쉽게 확장할 수 있으며 상위 메서드 호출을 위한 편리한 '수퍼' 액세스 기능을 제공합니다.

위 내용은 'new' 키워드는 JavaScript의 프로토타입 기반 상속에 어떤 영향을 미치나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.