Heim >Web-Frontend >js-Tutorial >Wie können JavaScript-Prototypen Objektreferenzen und Vererbung in großen Anwendungen beibehalten?
Beibehaltung der Objektreferenz und Vererbung in JavaScript-Prototypen
Bei der Organisation großer Anwendungen, die mit JavaScript-Prototypen und Vererbung erstellt wurden, ist es von entscheidender Bedeutung, die Codestruktur beizubehalten Dabei wird sichergestellt, dass Objektverweise und Vererbung intakt sind. Wenn wir zum Beispiel eine Klasse Carousel mit verschiedenen Funktionen wie next(), prev() und bindControls() haben, möchten wir sie vielleicht so organisieren:
Carousel.prototype.controls = { next: function () { ... } , prev: function() { ... }, bindControls: function () { .. } }
Dieser Ansatz beeinträchtigt jedoch die Wert von „this“, der den Kontext des Objekts enthält, für das eine Methode aufgerufen wird. Um dieses Problem zu beheben, können wir in Betracht ziehen, Controls als separate Klasse zu erstellen:
var Controls = function (controllable_object) { this.ref = controllable_object; }; Controls.prototype.next = function () { this.ref.foo(); }
Dadurch wird sichergestellt, dass der Verweis auf das ursprüngliche Objekt auch dann erhalten bleibt, wenn die Funktion next() in einer abgeleiteten Klasse wie BigCarousel überschrieben wird.
BigCarousel.prototype.next = function () { this.controls.next(); }
Alternativ können Sie einen Dependency-Injection-Ansatz anwenden, um die Logik zu entkoppeln:
var Controls = function () {}; Controls.prototype.next = function (ref) { ref.foo(); } var Carousel = function () { this.controls = new Controls(); };
Diese Methode bietet mehr Flexibilität zum späteren Hinzufügen benutzerdefinierter Controller. Durch die Trennung von Belangen können Sie eine saubere und erweiterbare Codebasis beibehalten und gleichzeitig Objektreferenzen und Vererbung beibehalten.
Das obige ist der detaillierte Inhalt vonWie können JavaScript-Prototypen Objektreferenzen und Vererbung in großen Anwendungen beibehalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!