Heim > Web-Frontend > js-Tutorial > Wie kann ich JavaScript-Prototypen organisieren und „diesen' Kontext während der Vererbung beibehalten?

Wie kann ich JavaScript-Prototypen organisieren und „diesen' Kontext während der Vererbung beibehalten?

Barbara Streisand
Freigeben: 2024-11-19 21:48:03
Original
693 Leute haben es durchsucht

How Can I Organize JavaScript Prototypes and Maintain `this` Context During Inheritance?

JavaScript-Prototypen mit beibehaltenen Objektreferenzen und Vererbung organisieren

In JavaScript kann die Organisation von Code mithilfe von Prototypen und Vererbung zu einer Herausforderung werden, wenn die Anwendung größer wird . Stellen Sie sich das folgende Szenario vor: Wir haben eine Karussellklasse mit mehreren Funktionen:

Carousel.prototype.next = function () {...}
Carousel.prototype.prev = function () {..}
Carousel.prototype.bindControls = function () {..}
Nach dem Login kopieren

Um die Codeorganisation zu verbessern, möchten wir diese Funktionen möglicherweise als Objekt gruppieren:

Carousel.prototype.controls = {
   next: function () { ... } , 
   prev: function() { ... },
   bindControls: function () { .. }
}
Nach dem Login kopieren

Allerdings Dieser Ansatz unterbricht den Verweis auf dieses Objekt, was zu Fehlern beim Erben von der Klasse führt. Um dieses Problem anzugehen, können wir verschiedene Strategien erkunden:

Eine Controls-Klasse erstellen:

Ein Ansatz besteht darin, eine separate Controls-Klasse wie folgt zu definieren:

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

var Carousel = function () {
    this.controls = new Controls(this);
};
// ..
Nach dem Login kopieren

Dadurch können wir den Verweis auf das ursprüngliche Objekt beibehalten, es ist jedoch nicht möglich, die Implementierung von Steuerelementen zu überschreiben.

Abhängigkeitsinjektion verwenden:

Ein flexiblerer Ansatz ist die Verwendung der Abhängigkeitsinjektion:

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));
Nach dem Login kopieren

Dadurch können wir mehrere Controller erstellen und sie dynamisch zum Karussell hinzufügen, was Flexibilität und die Möglichkeit bietet, Implementierungen zu überschreiben.

Das obige ist der detaillierte Inhalt vonWie kann ich JavaScript-Prototypen organisieren und „diesen' Kontext während der Vererbung beibehalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage