1. 程式人生 > >JS引用型別

JS引用型別

重新總結一遍,最近推薦vue給後端的小夥伴使用,涉及到引用物件的值一變全變的問題,比如說一個列表繫結的data陣列,編輯某一條的表單資料的時候,直接取列表物件的話,在表單中值改變的同時,列表中的資料也跟著變了,這顯然不是我們想要的。

這個問題的原因就在於JS中的引用型別物件,於是有以下程式碼親測結果:

基本型別(Number,String)


Array


Object

可見,基本型別可以認為是傳值賦值,而(狹義上的)物件型別則是引用賦值,會攜帶記憶體地址,相當於指標,其中一個拷貝變化,全部拷貝都會跟著變化。而對於MVVM框架來說,它的例項對應的資料都是存放在一個叫做data的物件中,相關的變數實際上只是data的屬性而已,也就是說data本身就是引用型別的物件字面量,也就是屬於上面所說的Object的情況。

解決方法:

var b = JSON.parse(JSON.stringify(a));
轉換為JSON字串之後可以解除引用