重新總結一遍,最近推薦vue給後端的小夥伴使用,涉及到引用物件的值一變全變的問題,比如說乙個列表繫結的data陣列,編輯某一條的表單資料的時候,直接取列表物件的話,在表單中值改變的同時,列表中的資料也跟著變了,這顯然不是我們想要的。
這個問題的原因就在於js中的引用型別物件,於是有以下**親測結果:
基本型別(number,string)
可見,基本型別可以認為是傳值賦值,而(狹義上的)物件型別則是引用賦值,會攜帶記憶體位址,相當於指標,其中乙個拷貝變化,全部拷貝都會跟著變化。而對於mvvm框架來說,它的例項對應的資料都是存放在乙個叫做data的物件中,相關的變數實際上只是data的屬性而已,也就是說data本身就是引用型別的物件字面量,也就是屬於上面所說的object的情況。
解決方法:
var b = json.parse(json.stringify(a));
轉換為json字串之後可以解除引用 js 引用型別
建立object 例項的方法有兩種 1 使用new 操作符 varperson newobject person.name ema person.age 27 2 使用物件字面量表示法 varperson 1.1.2.1 建立日期物件 varsomedate newdate 日期字串 date.ut...
JS 引用型別
1 值型別 基本型別 數值 number 布林值 boolean null undefined string 在賦值傳遞中會以引用型別的方式來處理 2 引用型別 物件 陣列 函式。1.直接將引用型別賦值獲取到的是原變數的引用 let test1 let test2 let test3 test1 t...
JS引用型別
1.引用型別與傳統物件導向程式設計中的類相似,但實現不同 2.object是乙個基礎型別,其他所有型別都從object繼承了基本的行為 3.array型別是一組值的有序列表,同時還提供了操作和轉換這些值的功能 4.date型別提供了有關日期和時間的資訊,包括當前日期和時間以及相關的計算功能 5.re...