來,先看問題。
let obj1 =
let obj2 = obj1
console.log('obj2:', obj2)
obj2.age = 22
console.log('obj2:', obj2)
console.log('obj1:', obj1)
列印結果:
可以發現,obj1的age也跟著發生了變化,這是因為obj2 = obj1這種賦值的方法是淺拷貝,原來的值發生變化,被賦值的值也會隨之發生變化。那麼應該怎麼賦值後 改變obj2時不會改變obj1的值呢。
賦值時先把obj1轉化為json字串,然後再轉化為json物件再賦值給obj2即可。 將
let obj2 = obj1
改為
let obj2 = json.parse(json.stringify(obj1))
也可以用object物件的assign方法:
let obj2 = object.assign({}, obj1)
即可,再看列印結果。
問題解決啦!
js 賦值問題
var foo var bar foo foo.x foo 輸出foo.x foo.x undefined為什麼呢?先看前面兩句 var foo var bar foo 這兩句的意思是定義了foo為乙個物件,並且讓bar指向這個物件。這很簡單。foo.x foo 等價於 foo.x foo 注意,此...
js變數賦值
變數名 一經宣告就不可以改變 值是可以改變的 var student wangjiaru 給 student 重新賦值 以最後一次賦值為主 的作用 賦值 student yangyuchuan student 劉浩 變數作用 存資料 變數的使用 讀資料 console.log student 使用變...
js賦值問題
js 引用 賦值 物件複製 陣列複製等 獲取基礎引數列表資料 getedittabledata event this.fieldconfdtos event 今天在用angular做父子元件的一些資料傳遞和處理時發現,子元件通過事件傳給父元件的資料被父元件處理後影響到了子元件。event是子元件傳遞...