Rumah > hujung hadapan web > tutorial js > Adakah `Array.prototype.fill()` Mencipta Kejadian Objek Baharu atau Kongsi Rujukan?

Adakah `Array.prototype.fill()` Mencipta Kejadian Objek Baharu atau Kongsi Rujukan?

Mary-Kate Olsen
Lepaskan: 2024-12-19 11:56:09
asal
987 orang telah melayarinya

Does `Array.prototype.fill()` Create New Object Instances, or Share References?

Array.prototype.fill() dengan Objek: Perkongsian Rujukan, Bukan Penciptaan Contoh

Apabila menggunakan Array.prototype.fill() dengan sesuatu objek, adalah penting untuk ambil perhatian bahawa ia menghantar rujukan kepada contoh objek yang sama dan bukannya mencipta kejadian baharu untuk setiap elemen. Tingkah laku ini ditunjukkan oleh kod berikut:

var arr = new Array(2).fill({});
arr[0] === arr[1]; // true (they point to the same object)
arr[0].test = 'string';
arr[1].test === 'string'; // true (changes made to one object are reflected in the other)
Salin selepas log masuk

Untuk mengelakkan perkongsian rujukan ini dan memastikan setiap elemen memegang contoh objek yang unik, fungsi map() boleh digunakan:

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

Dalam kes ini, map() mencipta objek baharu untuk setiap elemen, menghapuskan isu perkongsian rujukan.

Atas ialah kandungan terperinci Adakah `Array.prototype.fill()` Mencipta Kejadian Objek Baharu atau Kongsi Rujukan?. 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