首頁 >web前端 >js教程 >`Array.prototype.fill()` 是否建立新的物件實例,或共用參考?

`Array.prototype.fill()` 是否建立新的物件實例,或共用參考?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-19 11:56:091067瀏覽

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

Array.prototype.fill() 與物件:參考共享,而不是實例建立

當將Array.prototype.fill()與對像一起使用時一個對象,重要的是要注意它傳遞對同一對象實例的引用,而不是為每個元素創建新實例。以下程式碼示範了此行為:

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)

為了避免這種引用共享並確保每個元素保存唯一的物件實例,可以使用map() 函數:

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

在這些情況下,map() 會為每個元素建立新對象,從而消除引用共享問題。

以上是`Array.prototype.fill()` 是否建立新的物件實例,或共用參考?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn