js深度複製物件

醉紅塵┈┾發表於2018-04-16

js在處理複雜資料的時候,可能會涉及到引用型別的物件或者陣列的copy問題,下面是兩種複製物件或陣列的方法:

一、利用jquery自帶的方法,呼叫簡單方便

// 淺層複製(只複製object根級的各個值)
var newObject = jQuery.extend({}, oldObject);

// 深層複製(會複製整個(包括根節點和子節點)object的值)
var newObject = jQuery.extend(true, {}, oldObject);


二、可以通過js迴圈的方式去一層一層複製,如下

 // 淺層複製(只複製object根級的各個值)
 
var old_obj = {a:{b:50}};
function copyBoot(obj){
    var newobj = {};
    for ( var attr in obj) {
        newobj[attr] = obj[attr];
    }
    return newobj;
}
var obj2 = copyBoot(obj);
obj2.a.b = 20;
alert(obj.a.b); 
// 深層複製(會複製整個(包括根節點和子節點)object的值)
var obj = {a:{b:50}};
function copyAll(obj){
    if(typeof obj != `object`){
        return obj;
    }
    var newobj = {};
    for ( var attr in obj) {
        newobj[attr] = copyAll(obj[attr]);
    }
    return newobj;
}
var obj2 = copyAll(obj);
obj2.a.b = 20;
alert(obj.a.b);

 

相關文章