js賦值後 改變現有資料會修改原來的資料的解決辦法

2021-09-14 06:12:54 字數 758 閱讀 3543

來,先看問題。

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是子元件傳遞...