js物件拷貝

2021-08-21 20:25:21 字數 852 閱讀 8990

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 如果陣列元素是基本型別,就會拷貝乙份,互不影響,而如果是物件或者陣列,就...