js物件拷貝的方法

2021-10-11 00:01:34 字數 1431 閱讀 4947

適合情況:

json物件的深度轉殖。方法是先json.stringify() 轉為json字串, 再json.parse() 轉為json陣列

缺點:a.如果你的物件裡有函式, 函式無法被拷貝下來

b.無法拷貝copyobj物件原型鏈上的屬性和方法

var obj = 

};// 相同的引用

var obj2 = obj;

console.log(obj2 == obj); //true 直接複製只是複製物件的指標,還指向同乙個物件

//不同的引用

var obj3 = json.parse(json.stringify(obj));

console.log(obj3 == obj) //false 通過json方法複製後的位址不一樣

console.log(obj3);

var obj = 

};var obj2 = object.create(obj);

console.log(obj2 == obj); //false 指標位址變了

console.log(obj2);

只是拷貝了基本型別的資料;然而引用型別資料, 只是複製了指標,複製後還是指向該引用。

var obj = 

};var obj2 = {};

for (var i in obj)

console.log(obj2);

obj2.y.c.push(4); //給新陣列新增乙個元素4,會同步反映在新舊陣列中

console.log(obj2.y.c); // [1,2,3,4]

console.log(obj.y.c); // [1,2,3,4] 淺拷貝只是複製了位址,修改是記憶體中的資料

var obj = 

};function getclass(o)

function deepcopy(obj) ; //判斷傳入的如果是物件,繼續遍歷

else if (oclass == "array") result = ; //判斷傳入的如果是陣列,繼續遍歷

else return obj; //如果是基本資料型別就直接返回

for (var i in obj)

return result;

}var obj2 = deepcopy(obj);

console.log(obj2);

var obj = 

};var obj2 = $.extend({}, obj);

console.log(obj2 == obj) //false 複製後的位址不一樣

console.log(obj2);

js物件拷貝的方法

物件拷貝的方法是乙個難點,尤其是深拷貝。建議把 都執行下,幫助理解拷貝。1.適合情況 json物件的深度轉殖。方法是先json.stringify 轉為json字串,再json.parse 轉為json陣列 2.缺點 a.如果你的物件裡有函式,函式無法被拷貝下來 b.無法拷貝copyobj物件原型鏈...

js物件拷貝的方法

1.適合情況 json物件的深度轉殖,方法是json.stringify 轉化為json字串,再json.parse 轉為json陣列 2.缺點 a.如果你的物件裡面有函式,函式無法被拷貝下來 b.無法拷貝copyobj物件原型鏈上得屬性和方法 var obj 相同的引用 var obj2 boj ...

js物件深拷貝方法

json.stringify 是目前前端開發過程中最常用的深拷貝方式,原理是把有個物件序列化成為乙個 json 字串,將物件的內容轉換成字串的形式再儲存到磁碟上,再用json.parse 反序列化將 json 字串變成乙個新的物件 1 let obj1 56 let str json.stringi...