var a =
}} var obj = {}
for (let key in a)
} console.log(obj)
只要改動obj中hobby的值,那麼a物件中的也會改變,因為他們指向同乙個指標
var a =
}} var obj =
var a =
}}var obj = object.assign(a)
function
deepclone
(obj,newobj)if(
!obj ||
typeof obj !==
"object"
)for
(let key in obj))}
else
}return target
}遞迴結束條件如果傳遞物件為空或者型別不是物件型別for迴圈遍歷物件
,如果屬性值依然是引用型別,再次呼叫函式,否則直接賦值於新物件
JS深拷貝和淺拷貝
js中物件分為基本型別和復合 引用 型別,基本型別存放在棧記憶體,復合 引用 型別存放在堆記憶體中 堆記憶體中用於存放由new建立的物件,棧記憶體存放一些基本型別的變數和物件的引用變數 對於簡單變數,記憶體小,直接複製不會發生引用 var a 123 var b a a 123456 console...
JS淺拷貝和深拷貝
1.淺拷貝 copy var obj1 物件存放於堆記憶體中,物件中的鍵值對,值可以為物件,可以為陣列.var obj2 obj1 物件,陣列之間只有引用賦值 obj2.name 撒哈哈 當改動物件obj2的時候,obj1的key對應的value也會更改這是淺拷貝 深拷貝 var obj1 var ...
js深拷貝和淺拷貝
走在前端的大道上 var m var n m n.a 15 這時m.a的值是多少 m.a會輸出15,因為這是淺拷貝,n和m指向的是同乙個堆,物件複製只是複製的物件的引用。深拷貝和上面淺拷貝不同,就是徹底copy乙個物件,而不是copy物件的引用,例如,還是之前的例子,我們這麼寫 var m var ...