使用push你必須知道的小細節

相信大家平時開發的過程中,經常需要對數組進行操作,說到對數組的操作,push還是出場率很高的。

今天本人在使用push的過程中,因爲對這個方法的理解不夠深,導致開發過程中出現了小小的困擾。這裏先給大家舉個例子:

var obj = {name: 'han'};
var arr = [];
arr.push(obj)
arr.push(obj)
arr.push(obj)
arr.push(obj)
obj.name = 'liu'

在這裏,我們往一個空數組 arr 裏面添加了三個對象,然後將 obj 對象進行了改動,你們猜數組的變化是怎麼樣的?有沒有收到其影響?

既然都這麼問了,想都不用想,肯定發生變化了唄,果然:

// 果然,控制返回的結果是:
[(4) [{…}, {…}, {…}, {…}]
{name: "liu"}
{name: "liu"}
{name: "liu"}
{name: "liu"}]

從這裏看出了, push 進去的對象,相當於等於號 ‘=’ 的過程,對於對象,只是複製其指針地址,並不是真正意義上的複製,所以這裏多個對象其實是指向同一個地址的。於是乎才產生這種情況。

在這裏小小的分享了一些開發過程中的一些坑,和解決他們之後的收穫,更多文章請轉到此處 點我哦!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章