Rumah > hujung hadapan web > tutorial js > Mengapa Tatasusunan Prototaip dalam JavaScript Dikongsi Merentas Kejadian?

Mengapa Tatasusunan Prototaip dalam JavaScript Dikongsi Merentas Kejadian?

Linda Hamilton
Lepaskan: 2024-11-23 02:19:10
asal
260 orang telah melayarinya

Why Do Prototyped Arrays in JavaScript Become Shared Across Instances?

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" : [],
    // ...
};
Salin selepas log masuk

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 = [];
}
Salin selepas log masuk

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:

  • Sifat prototaip dirujuk secara dalaman melalui penuding ke objek prototaip.
  • Mengakses prototaip objek boleh dilakukan menggunakan Object.getPrototypeOf(obj).
  • Tingkah laku ini wujud dalam pewarisan prototaip dalam JavaScript dan tidak digunakan pada bahasa berasaskan kelas.

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!

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