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!