Heim > Web-Frontend > js-Tutorial > Warum unterbricht „Child.prototype = Parent.prototype' die JavaScript-Vererbung?

Warum unterbricht „Child.prototype = Parent.prototype' die JavaScript-Vererbung?

Barbara Streisand
Freigeben: 2024-11-19 00:55:02
Original
356 Leute haben es durchsucht

Why Does `Child.prototype = Parent.prototype` Break JavaScript Inheritance?

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;
Nach dem Login kopieren

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);
Nach dem Login kopieren

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!

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