>  기사  >  웹 프론트엔드  >  \'this\' 참조와 상속을 유지하면서 JavaScript 프로토타입을 어떻게 구성할 수 있습니까?

\'this\' 참조와 상속을 유지하면서 JavaScript 프로토타입을 어떻게 구성할 수 있습니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-23 00:58:11916검색

How Can I Organize JavaScript Prototypes While Preserving

보존된 참조 및 상속으로 JavaScript 프로토타입 구성

JavaScript 프로토타입 및 상속을 사용할 때 코드를 효과적으로 구성하려면 손실과 관련된 일반적인 문제가 발생합니다. 맞춤형 프로토타입의 "this" 값. 이 문제의 목적은 참조와 상속을 유지하면서 기능을 중첩된 개체로 구분하여 코드를 구성하는 것입니다.

제안된 솔루션:

이 문제를 해결하는 한 가지 접근 방식은 다음과 같습니다. 프로토타입 자체 내에 직접 중첩하는 대신 문제의 기능에 대한 전용 클래스를 생성합니다.

var Controls = function (controllable_object) {
    this.ref = controllable_object;
};
Controls.prototype.next = function () {
    this.ref.foo();
}
// ..

var Carousel = function () {
    this.controls = new Controls(this);
};
// ..

정의함으로써 컨트롤은 별도의 클래스로, "this" 참조는 사용자 정의된 프로토타입 내에서도 그대로 유지됩니다. 그러나 이 솔루션에는 컨트롤 구현 재정의를 허용하지 않는다는 제한 사항이 있습니다.

종속성 주입 솔루션:

컨트롤 구현 재정의를 활성화하려면 종속성 주입 접근 방식을 사용할 수 있습니다.

var Controls = function (controllable_object) {
    this.ref = controllable_object;
};
Controls.prototype.next = function () {
    this.ref.foo();
}
// ..

var Carousel = function () {
    this.controllers = [];
};
Carousel.prototype.addController = function (controller) {
    this.controllers.push(controller);
};
// ..

var carousel = new Carousel();
carousel.addController(new Controls(carousel));

이 솔루션은 상속된 클래스의 기능을 선택적으로 재정의할 수 있는 컨트롤러입니다.

위 내용은 \'this\' 참조와 상속을 유지하면서 JavaScript 프로토타입을 어떻게 구성할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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