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!