Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Mengelakkan Lulus Rujukan Apabila Menggunakan Array.prototype.fill() dengan Objek?

Bagaimana untuk Mengelakkan Lulus Rujukan Apabila Menggunakan Array.prototype.fill() dengan Objek?

Linda Hamilton
Lepaskan: 2025-01-01 13:17:10
asal
193 orang telah melayarinya

How to Avoid Reference Passing When Using Array.prototype.fill() with Objects?

Melalui Objek ke Array.prototype.fill() melalui Rujukan

Apabila memulakan tatasusunan dengan panjang tetap menggunakan kaedah fill() , menetapkan objek sebagai nilai menghasilkan semua elemen tatasusunan merujuk objek yang sama dan bukannya mencipta kejadian baharu. Ini boleh membawa kepada tingkah laku yang tidak diingini apabila mengubah suai elemen tatasusunan.

Contoh:

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

console.log(arr[0] === arr[1]); // true
arr[0].test = 'string';
console.log(arr[1].test); // 'string'
Salin selepas log masuk

Mengelakkan Hantaran Rujukan:

Untuk mencipta tatasusunan objek dengan setiap elemen adalah contoh yang berbeza, elakkan menggunakan fill() secara langsung dengan objek. Sebaliknya, ikut pendekatan alternatif ini:

Fungsi Peta:

Isi tatasusunan dengan nilai pemegang tempat (cth., tidak ditentukan) dan gunakan map() untuk mengubah setiap elemen menjadi objek baharu:

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

Kilang Objek Fungsi:

Gunakan fungsi yang mengembalikan objek baharu untuk mengisi tatasusunan:

var arr = new Array(2).fill().map(Object);
Salin selepas log masuk

Dengan menggunakan teknik ini, anda boleh memastikan setiap elemen dalam tatasusunan adalah individu objek, mengelakkan rujukan yang tidak diingini lulus dan mengekalkan pengasingan objek.

Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan Lulus Rujukan Apabila Menggunakan Array.prototype.fill() dengan Objek?. 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