Heim > Web-Frontend > js-Tutorial > Hauptteil

Wie kann ich prototypbasierten JavaScript-Code organisieren und dabei Objektreferenzen und Vererbung beibehalten?

Patricia Arquette
Freigeben: 2024-11-17 17:48:01
Original
856 Leute haben es durchsucht

How Can I Organize Prototype-Based JavaScript Code While Preserving Object References and Inheritance?

Prototypisches JavaScript unter Beibehaltung der Objektreferenz und -vererbung organisieren

Dilemma: Code neu organisieren, um die Struktur zu verbessern

Prototypische Vererbung ist ein leistungsstarkes JavaScript-Paradigma. Die Verwaltung großer Anwendungen kann jedoch eine Herausforderung sein. Stellen Sie sich eine Karussellklasse mit zahlreichen Funktionen vor:

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

Refactoring für eine bessere Codeorganisation könnte das Gruppieren von Funktionen in Unterobjekten beinhalten:

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

Diese Änderung bringt jedoch ein Problem mit sich: die „ Das Schlüsselwort „this“ bezieht sich in diesen Funktionen nicht mehr auf die Karussellinstanz.

Überwindung des „this“-Problems

Die Beibehaltung des „this“-Kontexts ist entscheidend, insbesondere in Szenarien, in denen Klassen von übergeordneten Klassen erben . Überschreibende Funktionen in geerbten Klassen müssen das richtige „diese“ Verhalten beibehalten.

Lösungen

Sub-Object Wrapping

Ein Ansatz besteht darin, Controls als separate Klasse zu definieren und eine Referenz zu speichern zur Karussellinstanz:

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

Während diese Lösung das „diese“ Problem behebt, verhindert sie das Überschreiben der Controls-Implementierung.

Abhängigkeitsinjektion

Eine flexiblere Lösung Der Ansatz beinhaltet die 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);
    };
// ..
Nach dem Login kopieren

In diesem Szenario kann die Karussellklasse mehrere Controller hinzufügen, mehrere Funktionssätze aufnehmen und einfache Überschreibungen ermöglichen.

Das obige ist der detaillierte Inhalt vonWie kann ich prototypbasierten JavaScript-Code organisieren und dabei Objektreferenzen und 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