객체 상속의 '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 중국어 웹사이트의 기타 관련 기사를 참조하세요!