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

Mengapa Tatasusunan Prototaip dalam JavaScript Dikongsi Merentas Kejadian Kelas?

Linda Hamilton
Lepaskan: 2024-11-19 09:13:02
asal
187 orang telah melayarinya

Why Do Prototype Arrays in JavaScript Get Shared Across Class Instances?

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 );

    }

}
Salin selepas log masuk

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 = [];

}
Salin selepas log masuk

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!

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