> 웹 프론트엔드 > JS 튜토리얼 > 'new' 키워드는 JavaScript의 개체 상속에 어떤 영향을 줍니까?

'new' 키워드는 JavaScript의 개체 상속에 어떤 영향을 줍니까?

Mary-Kate Olsen
풀어 주다: 2024-12-21 14:49:09
원래의
170명이 탐색했습니다.

How Does the `new` Keyword Impact Object Inheritance in JavaScript?

객체 상속의 'new' 키워드 이해

두 객체 생성자 간에 상속을 생성할 때 'new' 키워드가 중요한 역할을 합니다. . 다음 코드의 맥락에서 그 목적을 살펴보겠습니다.

WeatherWidget.prototype = new Widget;
로그인 후 복사

여기서 목표는 새로운 WeatherWidget 생성자로 Widget 생성자를 확장하는 것입니다. 'new' 키워드를 사용하면 Widget을 생성자로 효과적으로 호출하고 그 반환 값을 WeatherWidget의 프로토타입 속성에 할당할 수 있습니다.

'new' 생략의 영향

코드에서 'new' 키워드를 생략하면 결과가 달라집니다. 'new'가 없으면 인수 목록이 추가되지 않는 한 Widget은 생성자로 호출되지 않습니다. 게다가 구현이 ECMAScript Ed를 준수하는 경우 생성자 내의 'this' 참조가 전역 객체에 바인딩될 수 있으므로 엄격 모드 코드에서는 그런 식으로 Widget을 호출하는 것이 불가능할 수 있습니다. 5.x.

'new' 사용 시 발생할 수 있는 문제

'new'를 사용하면 상속을 생성할 수 있지만 단점도 있을 수 있습니다. 예를 들어 WeatherWidget의 모든 인스턴스는 동일한 Widget 인스턴스에서 상속됩니다. 이는 Widget 인스턴스에서 상속된 모든 속성 값이 모든 WeatherWidget 인스턴스에서 공유된다는 의미입니다.

대체 상속 접근 방식

클래스 기반 상속을 구현하는 보다 적절한 방법 프로토타입 기반 언어에서는 다음 접근 방식을 사용하는 것입니다.

function Dummy () {}
Dummy.prototype = Widget.prototype;
WeatherWidget.prototype = new Dummy();
WeatherWidget.prototype.constructor = WeatherWidget;
로그인 후 복사

이 접근 방식은 다음을 보장합니다. WeatherWidget 인스턴스는 속성 값을 서로 공유하지 않고 프로토타입 체인을 통해 속성을 상속합니다. 또한 'constructor' 속성이 올바르게 설정되어 각 WeatherWidget 인스턴스가 올바른 생성자를 가리킵니다.

ECMAScript 5 이상

ECMAScript 5 이상에서는 다음 구문을 사용하여 상속을 생성할 수 있습니다.

WeatherWidget.prototype = Object.create(Widget.prototype, {
  constructor: {value: WeatherWidget}
});
로그인 후 복사

이 구문은 결과를 다음과 같이 만드는 이점이 있습니다. '생성자' 속성은 쓰기 불가, 열거 불가, 구성 불가입니다.

결론적으로, 객체 상속의 'new' 키워드는 특정 목적을 위해 사용되지만 잠재적인 문제를 피하기 위해 사용에 주의해야 합니다. 더 많은 유연성과 제어를 제공하는 대체 상속 접근 방식을 사용할 수 있습니다.

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿