1、萬能的for迴圈實現物件的淺拷貝
僅僅複製物件的引用,而不是物件本身。
給子物件的陣列型別的屬性新增乙個新值,父物件的該屬性值也被篡改。
var obj =
var obj2 = copyobj(obj)
function copyobj(obj)
for (var key in obj)
return res
}
2、轉換成json再轉換成物件實現物件的深拷貝
把複製的物件所引用的全部物件都複製一遍,能夠實現真正意義上的陣列和物件的拷貝。
var obj =
var obj2 = json.parse(json.stringify(obj))
3、擴充套件運算子實現物件的深拷貝
var obj =
var = obj
obj.old = '22'
console.log(obj)
console.log(obj2)
4、object.assign淺拷貝
object.assign
方法的第乙個引數是目標物件,後面的引數都是源物件。
注意,如果目標物件與源物件有同名屬性,或多個源物件有同名屬性,則後面的屬性會覆蓋前面的屬性。
const target = ;
const source1 = ;
const source2 = ;
object.assign(target, source1, source2);
target //
js物件的拷貝
物件淺複製 object.prototype.clone function for var i in this return newobj 上面 只複製物件的基本型別屬性。物件深拷貝 object.prototype.clone function for var i in this else ret...
js物件深度拷貝
js中物件是引用資料型別,如果我們只是簡單的把物件a通過等號複製給物件b,那麼物件a b指向的還是同乙個位址,這是改變a,b也會跟著改變。var a var b a b.a 2 console.log a.a 2這並不是我們想要看到的,一般我們想要的拷貝乙個物件就是想要相互不影響兩個物件。也就是深度...
js陣列物件拷貝
陣列拷貝 var arr old var new arr arr.concat arr 0 old new new arr 1 0 new console.log arr new console.log new arr new 如果陣列元素是基本型別,就會拷貝乙份,互不影響,而如果是物件或者陣列,就...