Rumah >hujung hadapan web >tutorial js >Mengapa Array.prototype.fill() Mencipta Rujukan Objek Dikongsi, dan Bagaimana Saya Boleh Mengelaknya?

Mengapa Array.prototype.fill() Mencipta Rujukan Objek Dikongsi, dan Bagaimana Saya Boleh Mengelaknya?

DDD
DDDasal
2024-12-18 17:46:14679semak imbas

Why Does Array.prototype.fill() Create Shared Object References, and How Can I Avoid It?

Rujukan Array.prototype.fill() Daripada Mencipta Instance Baharu

Apabila cuba memulakan tatasusunan menggunakan Array.prototype.fill( ), tingkah laku boleh menjadi tidak dijangka apabila nilai isian ialah objek. Dalam kes ini, rujukan kepada objek yang sama disimpan dalam setiap elemen tatasusunan, yang membawa kepada perkongsian sifat dan tingkah laku yang tidak diingini.

Untuk menangani perkara ini, disyorkan untuk menggunakan kaedah alternatif seperti map() untuk cipta contoh objek baharu untuk setiap elemen dalam tatasusunan. Ini boleh dicapai dengan terlebih dahulu mengisi tatasusunan dengan nilai arbitrari dan kemudian memetakan setiap elemen ke objek baharu:

var arr = new Array(2).fill().map(u => ({}));

Sebagai alternatif, anda boleh menggunakan Object() sebagai pemeta untuk mencipta objek baharu bagi setiap elemen tatasusunan:

var arr = new Array(2).fill().map(Object);

Dengan menggunakan teknik ini, anda boleh memastikan bahawa setiap elemen dalam tatasusunan yang diisi ialah objek bebas, menghapuskan potensi isu berkaitan kepada rujukan yang dikongsi.

Atas ialah kandungan terperinci Mengapa Array.prototype.fill() Mencipta Rujukan Objek Dikongsi, dan Bagaimana Saya Boleh Mengelaknya?. 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