Rumah >hujung hadapan web >tutorial js >Adakah Ahli Objek JavaScript Diprototaip sebagai Tatasusunan Dikongsi atau Peribadi?
Dalam JavaScript, sifat objek boleh ditakrifkan dalam dua cara: secara langsung pada objek atau sebagai sifat bagi prototaip objek. Tingkah laku ini mempunyai implikasi yang ketara apabila berurusan dengan tatasusunan.
Secara lalai, tatasusunan prototaip dikongsi antara semua kejadian kelas, yang membawa kepada tingkah laku yang tidak dijangka. Sebagai contoh, jika prototaip kelas mengandungi tatasusunan kosong, semua kejadian akan merujuk tatasusunan yang sama. Ini boleh diperhatikan dalam contoh berikut:
function Sandwich() { // Uncomment 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); } }; var cheeseburger = new Sandwich(); cheeseburger.addIngredients(["burger", "cheese"]); var blt = new Sandwich(); blt.addIngredients(["bacon", "lettuce", "tomato"]); print_r("Cheeseburger contains:", cheeseburger.ingredients);
Dalam contoh ini, kedua-dua cheeseburger dan blt berkongsi susunan bahan yang sama, walaupun ia adalah kejadian yang berbeza. Menambah bahan pada burger keju juga mempengaruhi blt, menyerlahkan sifat perkongsian tatasusunan.
Untuk membetulkan tingkah laku ini, adalah disyorkan untuk menentukan tatasusunan secara langsung pada objek itu sendiri, bukannya sebagai sifat prototaip. Ini memastikan bahawa setiap kejadian mempunyai tatasusunan peribadinya sendiri. Pengubahsuaian kod berikut menyelesaikan masalah:
function Sandwich() { this.ingredients = []; }
Dengan mentakrifkan tatasusunan dalam pembina, setiap tika Sandwich akan mempunyai salinan peribadi tatasusunannya sendiri, menghapuskan tingkah laku perkongsian.
Ringkasnya, tatasusunan prototaip dikongsi antara semua kejadian kelas dalam JavaScript. Untuk mencipta tatasusunan peribadi bagi setiap contoh, adalah perlu untuk menentukan tatasusunan secara langsung pada objek itu sendiri dalam pembina. Perbezaan ini penting untuk memahami dan mengurus gelagat objek dalam JavaScript.
Atas ialah kandungan terperinci Adakah Ahli Objek JavaScript Diprototaip sebagai Tatasusunan Dikongsi atau Peribadi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!