Memahami Perkongsian Prototaip dalam JavaScript: Objek Diwarisi daripada Prototaip
Dalam JavaScript, objek mewarisi sifat daripada prototaipnya. Satu aspek yang perlu dipertimbangkan ialah cara tatasusunan yang ditakrifkan sebagai sifat prototaip berkelakuan dalam tika kelas.
Seperti yang diperhatikan, tatasusunan prototaip bukan peribadi kepada tika kelas individu tetapi sebaliknya dikongsi antara semua kejadian. Tingkah laku ini timbul kerana prototaip objek bertindak sebagai objek itu sendiri. Sifat prototaip dikongsi oleh semua objek yang diperoleh daripada prototaip khusus itu.
Pertimbangkan contoh berikut:
function Sandwich() { // Uncomment this to fix the problem //this.ingredients = []; } Sandwich.prototype = { "ingredients" : [], "addIngredients" : function( ingArray ) { for( var key in ingArray ) { this.addIngredient( ingArray[ key ] ); } }, "addIngredient" : function( thing ) { this.ingredients.push( thing ); } }
Dalam contoh ini, tatasusunan bernama "bahan" ditakrifkan sebagai sifat prototaip bagi fungsi "Sandwic". Jika "this.ingredients = [];" diulas dalam pembina, tingkah laku berikut berlaku:
Apabila tika baharu "Sandwic" dicipta (seperti "cheeseburger" atau "blt"), kejadian ini mula-mula mewarisi tatasusunan "bahan" daripada prototaip. Pengubahsuaian yang dibuat pada tatasusunan ini, seperti menambahkan bahan-bahan pada "burger keju", juga mempengaruhi tatasusunan "ramuan" semua contoh "Sandwic" yang lain. Tingkah laku yang dikongsi ini timbul daripada fakta bahawa semua kejadian merujuk tatasusunan yang sama, bukan salinan individu.
Untuk menyelesaikan isu ini dan mencipta tatasusunan berasingan bagi setiap tika, tatasusunan "ramuan" mesti ditakrifkan dalam pembina:
function Sandwich() { this.ingredients = []; }
Pengubahsuaian ini memberikan tatasusunan baharu kepada setiap tika "Sandwic" semasa pembinaan, memastikan sebarang perubahan yang dibuat pada tatasusunan "ramuan" adalah contoh khusus.
Ringkasnya, tatasusunan yang ditakrifkan sebagai sifat prototaip dikongsi antara semua objek yang mewarisi daripada prototaip tersebut. Untuk mencipta data khusus contoh, seperti tatasusunan, ia mesti ditakrifkan dalam pembina. Pemahaman ini adalah penting untuk penggunaan berkesan warisan dan pengaturcaraan berorientasikan objek dalam JavaScript.
Atas ialah kandungan terperinci Mengapa Tatasusunan Prototaip dalam JavaScript Dikongsi Merentas Kejadian Kelas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!