Susun Prototaip dalam JavaScript: Dikongsi Merentas Kejadian
Dalam JavaScript, prototaip membolehkan perkongsian tingkah laku dan data antara tika kelas. Walau bagaimanapun, apabila membuat prototaip tatasusunan, gelagat unik muncul: ia dikongsi merentas semua kejadian kelas dan bukannya peribadi.
Cara Prototaip Berfungsi:
Prototaip objek berfungsi sebagai pelan tindakan untuk mencipta objek baharu. Sifat dan kaedah yang ditakrifkan dalam prototaip boleh diakses oleh semua objek yang mewarisi daripadanya. Konsep ini berbeza daripada bahasa berasaskan kelas di mana tika mempunyai salinan sifat yang berasingan.
Dalam contoh berikut, kelas Sandwich mewarisi daripada objek Sandwich.prototype:
function Sandwich() { // Uncomment to fix the problem //this.ingredients = []; } Sandwich.prototype = { "ingredients" : [], // ... };
Di sini, sifat bahan ditakrifkan pada prototaip. Ini bermakna semua kejadian (cth., burger keju, blt, dll.) akan berkongsi tatasusunan yang sama ini.
Tatasusunan Dikongsi:
Isu dengan tatasusunan prototaip ialah mengubah suai tatasusunan instance mempengaruhi semua yang lain. Ini boleh membawa kepada tingkah laku yang tidak dijangka, seperti yang diperhatikan dalam contoh yang disediakan dalam soalan. Apabila sama ada cheeseburger.ingredients atau blt.ingredients diubah suai, ia menukar tatasusunan kongsi yang sama yang diwarisi daripada Sandwich.prototype.
Cara Mengelakkan Perkongsian:
Untuk mencipta peribadi tatasusunan untuk setiap contoh, tentukan harta dalam pembina, bukan prototaip:
function Sandwich() { this.ingredients = []; }
Di sini, sifat bahan diperuntukkan kepada setiap tika yang baru dibuat, menjadikannya berbeza dan diasingkan daripada kejadian lain.
Data Dikongsi lwn. Khusus Instance:
Peraturan umum adalah untuk menetapkan data khusus contoh dalam pembina dan data kongsi (cth., kaedah) dalam prototaip. Ini membolehkan akses terkawal dan fleksibiliti dalam mencipta objek.
Nota Tambahan:
Atas ialah kandungan terperinci Mengapa Tatasusunan Prototaip dalam JavaScript Dikongsi Merentas Kejadian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!