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
Mary-Kate Olsenasal
2024-12-19 11:56:091067semak imbas

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)

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

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!

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