Heim  >  Artikel  >  Web-Frontend  >  Wie kann ich JavaScript-Prototypen organisieren und dabei „diese' Referenzen und Vererbung beibehalten?

Wie kann ich JavaScript-Prototypen organisieren und dabei „diese' Referenzen und Vererbung beibehalten?

Susan Sarandon
Susan SarandonOriginal
2024-11-23 00:58:11893Durchsuche

How Can I Organize JavaScript Prototypes While Preserving

JavaScript-Prototypen mit beibehaltenen Referenzen und Vererbung organisieren

Um Code bei der Verwendung von JavaScript-Prototypen und Vererbung effektiv zu organisieren, entsteht ein häufiges Problem mit dem Verlust des „dies“-Wertes in kundenspezifischen Prototypen. Bei diesem Problem besteht die Absicht darin, Code zu organisieren, indem Funktionalitäten in verschachtelte Objekte unterteilt werden und gleichzeitig Referenz und Vererbung erhalten bleiben.

Vorgeschlagene Lösung:

Ein Ansatz zur Lösung dieses Problems ist um eine dedizierte Klasse für die betreffende Funktionalität zu erstellen, anstatt sie direkt im Prototyp selbst zu verschachteln.

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

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

Durch die Definition von Steuerelementen Als separate Klasse bleibt die „this“-Referenz auch innerhalb angepasster Prototypen erhalten. Diese Lösung weist jedoch die Einschränkung auf, dass die Implementierung von Controls nicht überschrieben werden darf.

Abhängigkeitsinjektionslösung:

Um das Überschreiben von Controls-Implementierungen zu ermöglichen, a Der Dependency-Injection-Ansatz kann verwendet werden:

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));

Diese Lösung bietet Flexibilität, indem sie das dynamische Hinzufügen und Ändern von Controllern ermöglicht und so die Auswahl ermöglicht Überschreiben der Funktionalität in geerbten Klassen.

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

Stellungnahme:
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