Rumah > hujung hadapan web > tutorial js > Child.prototype = Parent.Prototype vs. Child.prototype = new Parent(): Mengapa Pilih Satu Daripada Yang Lain dalam Warisan JavaScript?

Child.prototype = Parent.Prototype vs. Child.prototype = new Parent(): Mengapa Pilih Satu Daripada Yang Lain dalam Warisan JavaScript?

Mary-Kate Olsen
Lepaskan: 2024-11-13 14:38:02
asal
884 orang telah melayarinya

Child.prototype = Parent.Prototype vs. Child.prototype = new Parent(): Why Choose One Over the Other in JavaScript Inheritance?

Model Pewarisan Mengatasi: Child.prototype = Parent.Prototype vs. Child.prototype = new Parent()

Dalam pewarisan JavaScript, hubungan antara objek kanak-kanak dan ibu bapa diwujudkan melalui rantaian prototaip. Biasanya, pembangun mentakrifkan warisan menggunakan Child.prototype = new Parent(). Walau bagaimanapun, pendekatan alternatif, Child.prototype = Parent.Prototype, juga wujud. Artikel ini mengkaji perbezaan antara kedua-duanya dan memberikan penjelasan tentang percanggahan yang ketara yang timbul apabila menggunakan yang kedua.

Perbezaan dalam Pelaksanaan

Child.prototype = new Parent () mencipta objek baharu sebagai prototaip untuk kelas anak (Kanak-kanak) dan menetapkan prototaipnya kepada kelas induk (Ibu bapa). Objek yang baru dicipta ini mewarisi semua sifat dan kaedah daripada induk.

Sebaliknya, Child.prototype = Parent.Prototype tidak mencipta objek baharu. Sebaliknya, ia hanya merujuk prototaip kelas induk. Ini bermakna kelas anak dan ibu bapa berkongsi objek prototaip yang sama dan sebarang perubahan yang dibuat pada satu akan menjejaskan yang lain.

Percanggahan dalam .proto Property

Dalam contoh yang disediakan , percanggahan timbul kerana garisan this.hitBox cuba menambah sifat pada objek ini, yang dalam kes Kapal Angkasa ialah prototaip yang baru dibuat. Walau bagaimanapun, apabila prototaip (this.hitBox) kemudiannya diperuntukkan kepada GameObject.prototype, prototaip GameObject ditimpa dan sifat-sifat yang telah ditambahkan pada prototaip Spaceship akan hilang. Ini menerangkan sebab sifat this.proto dalam Spaceship ditetapkan kepada Spaceship dan bukannya GameObject.

Kaedah Warisan Disyorkan

Agar warisan berfungsi dengan betul, disyorkan untuk menggunakan Child .prototype = new Parent() instead of Child.prototype = Parent.Prototype. Pendekatan terdahulu mencipta objek prototaip yang berasingan untuk kelas anak, manakala yang kedua boleh membawa kepada tingkah laku pewarisan yang tidak dijangka.

Untuk mengurangkan isu dalam contoh yang disediakan, seseorang boleh menggunakan Object.create(GameObject.prototype) untuk cipta objek baharu sebagai prototaip untuk Kapal Angkasa. Objek ini akan mempunyai sifat dan kaedah yang sama seperti prototaip GameObject tetapi tidak akan ditimpa apabila prototaip GameObject diubah suai.

Atas ialah kandungan terperinci Child.prototype = Parent.Prototype vs. Child.prototype = new Parent(): Mengapa Pilih Satu Daripada Yang Lain dalam Warisan JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan