Rumah  >  Artikel  >  hujung hadapan web  >  Mengapakah Ahli Objek JavaScript Diprototaip sebagai Tatasusunan Menjadi Dikongsi Merentas Kejadian Kelas?

Mengapakah Ahli Objek JavaScript Diprototaip sebagai Tatasusunan Menjadi Dikongsi Merentas Kejadian Kelas?

Patricia Arquette
Patricia Arquetteasal
2024-11-13 07:26:02627semak imbas

Why do JavaScript Object Members Prototyped as Arrays Become Shared Across Class Instances?

Ahli Objek JavaScript Diprototaip sebagai Tatasusunan: Dikongsi Merentas Kejadian Kelas

Apabila membuat prototaip tatasusunan dalam JavaScript, adalah penting untuk memahami bahawa ahli ini menjadi dikongsi antara semua contoh kelas. Tingkah laku ini mungkin kelihatan berlawanan dengan intuisi jika anda terbiasa dengan ahli objek peribadi.

Penjelasan Tingkah Laku

Mekanisme prototaip JavaScript membenarkan objek mewarisi sifat dan kaedah daripada objek induk, dikenali sebagai prototaip. Apabila anda mentakrifkan tatasusunan sebagai harta dalam prototaip, ia boleh diakses oleh semua objek yang mewarisi daripada prototaip itu.

Skrip contoh menunjukkan tingkah laku ini:

function Sandwich() {
    // Uncomment this to fix the problem
    //this.ingredients = [];
}

Dengan baris yang diulas tanpa diulas, setiap contoh Sandwic akan mempunyai susunan bahan peribadinya sendiri. Walau bagaimanapun, dengan baris diulas, semua kejadian berkongsi tatasusunan prototaip yang sama.

Ini bermakna menambah bahan pada burger keju turut mengemas kini ramuan blt dan spicy_chicken_sandwich. Untuk mengelakkan ini, anda mesti menentukan tatasusunan bahan dalam pembina, seperti yang ditunjukkan dalam contoh yang dikemas kini di bawah:

function Sandwich() {
    this.ingredients = [];
}

Prototaip lwn. Contoh

Adalah penting untuk membezakan antara sifat prototaip dan sifat contoh. Sifat prototaip dikongsi oleh semua objek yang mewarisi daripada prototaip itu, manakala sifat contoh adalah unik untuk setiap objek.

  • Tetapkan sifat kepada prototaip untuk menentukan data atau kaedah yang dikongsi.
  • Tetapkan sifat kepada contoh di dalam pembina untuk menentukan khusus contoh data.

Pengubahsuaian Kod untuk Membetulkan Gelagat

Dalam skrip contoh, menyahkomen baris this.ingredients = []; dalam pembina Sandwich memastikan bahawa setiap kejadian mempunyai tatasusunan ramuannya sendiri, seperti yang dimaksudkan.

Kesimpulan

Memahami gelagat tatasusunan prototaip dalam JavaScript adalah penting untuk mengelakkan perkongsian yang tidak dijangka antara contoh kelas. Sentiasa ingat bahawa data yang sepatutnya khusus contoh harus ditakrifkan dalam pembina, manakala data yang dikongsi boleh diberikan kepada prototaip melalui warisan.

Atas ialah kandungan terperinci Mengapakah Ahli Objek JavaScript Diprototaip sebagai Tatasusunan Menjadi Dikongsi Merentas Kejadian Kelas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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