Warum Child.prototype = Parent.Prototype die Javascript-Vererbung unterbrechen könnte?
Bei der Javascript-Vererbung sind Sie möglicherweise auf das folgende Vererbungsmuster gestoßen :
function GameObject(oImg, x, y) { // GameObject constructor } Spaceship.prototype = new GameObject(); Spaceship.prototype.constructor = Spaceship;
Möglicherweise ist Ihnen jedoch beim Hinzufügen von Eigenschaften ein unerwartetes Verhalten aufgefallen Spaceship.prototype nach der Vererbung. Die Prototypeigenschaft von Spaceship wird auf Spaceship und nicht auf GameObject gesetzt.
Dies liegt daran, dass die beiden Prototypen beginnen, auf dasselbe Objekt zu verweisen, wenn Sie Spaceship.prototype = GameObject.prototype festlegen. Jede Änderung an einem Objekt wirkt sich auf das andere aus. Daher werden durch das Hinzufügen von Eigenschaften zu Spaceship.prototype diese auch zu GameObject.prototype hinzugefügt.
Um dieses Problem zu vermeiden, können Sie Folgendes verwenden:
Spaceship.prototype = Object.create(GameObject.prototype);
Dadurch wird ein neues Objekt mit GameObject.prototype erstellt als Prototyp, um sicherzustellen, dass Änderungen an Spaceship.prototype keine Auswirkungen auf GameObject.prototype haben.
Alternativ, wenn Sie möchten Rufen Sie den Konstruktor auf und verwenden Sie GameObject.apply(this, arguments) im Spaceship-Konstruktor anstelle der obigen Zeile.
Das obige ist der detaillierte Inhalt vonWarum unterbricht „Child.prototype = Parent.prototype' die JavaScript-Vererbung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!