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
Linda Hamiltonasal
2025-01-01 13:17:10223semak imbas

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'

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 => ({}));

Kilang Objek Fungsi:

Gunakan fungsi yang mengembalikan objek baharu untuk mengisi tatasusunan:

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

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!

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