淺拷貝:
思路----------把父物件的屬性,全部拷貝給子物件,實現繼承。
問題---------如果父物件的屬性等於陣列或另乙個物件,那麼實際上,子物件獲得的只是乙個記憶體位址,不會開闢新棧,不是真正拷貝,因此存在父物件被篡改的可能。
**:
functiondeepcopy(o);
for(i in
o);
return
f}
深拷貝:
思路-----------遞迴呼叫'淺拷貝',可以解決子物件修改時會汙染父物件,此時兩個物件指向的不是乙個記憶體位址。
**:
functiondeepcopy(p,c);
for(let i in
p); //通過判斷父級物件的屬性的constructor的型別,指定子集物件屬性的型別
deepcopy(p[i],c[i])}; //遞迴呼叫自身進行深層拷貝else
} return
c;
}
js實現深拷貝和淺拷貝
let obj let newobj obj.age.age 25 修改第二層的obj.age.age,newobj.age.age也會跟著變化 console.log newobj 複製 注意 資料的slice和concat方法也是淺拷貝,只能拷貝一層 原理 把乙個物件轉化成乙個字串,再把這個字串...
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 ...