Heim > Web-Frontend > js-Tutorial > Warum ist Child.prototype = Parent.prototype eine schlechte Idee für die JavaScript-Vererbung?

Warum ist Child.prototype = Parent.prototype eine schlechte Idee für die JavaScript-Vererbung?

DDD
Freigeben: 2024-11-13 16:09:02
Original
772 Leute haben es durchsucht

Why is Child.prototype = Parent.prototype a Bad Idea for JavaScript Inheritance?

Vererbung in JavaScript: Warum nicht Child.prototype = Parent.prototype verwenden?

In JavaScript kann Vererbung durch Delegation und Verwendung erreicht werden Child.prototype = new Parent(); um den untergeordneten Prototyp mit einer neuen Instanz des übergeordneten Prototyps zu verknüpfen. Das Festlegen von Child.prototype = Parent.prototype führt jedoch zu unerwartetem Verhalten.

Diese Zuweisung setzt die Proto-Eigenschaft von Child.prototype auf Parent.prototype. Dies bedeutet, dass sich alle an Child.prototype oder Parent.prototype vorgenommenen Änderungen auf den Prototyp des anderen Objekts auswirken. Dieses Verhalten ist problematisch, da es die Kapselung und Unabhängigkeit separater Objekthierarchien unterbricht.

Im bereitgestellten Beispiel führt die Zuweisung von this.hitBox.width und this.hitBox.height im Spaceship-Konstruktor je nach zu einem anderen Ergebnis die Vererbungsmethode. Bei Verwendung von Spaceship.prototype = new GameObject(); wird die this.proto-Eigenschaft von Spaceship auf GameObject gesetzt, während bei Verwendung von Spaceship.prototype = GameObject.prototype this.proto auf Spaceship gesetzt wird.

Stattdessen dieser Methoden mit Spaceship.prototype = Object.create(GameObject.prototype); Erstellt eine Kopie des GameObject-Prototyps und ermöglicht Änderungen an Spaceship.prototype, ohne GameObject.prototype zu beeinträchtigen. Dadurch bleiben die Unabhängigkeit und Kapselung von Objekthierarchien erhalten und gleichzeitig die gewünschte Vererbungsbeziehung erhalten.

Das obige ist der detaillierte Inhalt vonWarum ist Child.prototype = Parent.prototype eine schlechte Idee für die JavaScript-Vererbung?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage