Mengapa Child.prototype = Parent.Prototype Mungkin Memecahkan Warisan Javascript?
Dalam pewarisan Javascript, anda mungkin pernah menemui corak pewarisan berikut :
function GameObject(oImg, x, y) { // GameObject constructor } Spaceship.prototype = new GameObject(); Spaceship.prototype.constructor = Spaceship;
Walau bagaimanapun, anda mungkin perasan gelagat yang tidak dijangka apabila menambahkan sifat pada Spaceship.prototaip selepas warisan. Sifat prototaip Spaceship akan ditetapkan kepada Spaceship dan bukannya GameObject.
Ini berlaku kerana apabila anda menetapkan Spaceship.prototype = GameObject.prototype, kedua-dua prototaip mula merujuk kepada objek yang sama. Sebarang pengubahsuaian pada satu objek akan menjejaskan yang lain. Oleh itu, menambahkan sifat pada Spaceship.prototype juga akan menambahkannya pada GameObject.prototype.
Untuk mengelakkan isu ini, anda boleh menggunakan:
Spaceship.prototype = Object.create(GameObject.prototype);
Ini mencipta objek baharu dengan GameObject.prototype sebagai prototaipnya, memastikan pengubahsuaian kepada Spaceship.prototype tidak akan menjejaskan GameObject.prototype.
Sebagai alternatif, jika anda ingin menggunakan pembina, gunakan GameObject.apply(this, arguments) dalam pembina Spaceship dan bukannya baris di atas.
Atas ialah kandungan terperinci Mengapakah `Child.prototype = Parent.prototype` Memecahkan Warisan JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!