JavaScript:實現對Object型別的深克隆方法
阿新 • • 發佈:2018-12-15
通過淺拷貝所克隆出來的物件指向的是同一個空間,改變一個物件的內容會影響另一個。
而深拷貝所克隆出來的完全是兩個物件,修改內容,相互不影響。
這個程式的編寫思路是:
1.遍歷物件(for(var prop in obj))
2.判斷是不是原始值 typeof() object
3.判斷是陣列還是物件 instanceof toString constructor
4.如果是物件則遞迴。
function deepkelon(origin,target) {
var target = target || {};
toStr = Object.prototype. toString;
arrStr = "[object Array]";
for(var prop in origin){
if(origin.hasOwnProperty(prop)){
if(origin[prop] !== null && typeof(origin[prop]) == 'object'){
target[prop] = toStr.call(origin[prop]) == arrStr? []:{};
deepkelon(origin[ prop],target[prop]);
}else{
target[prop] = origin[prop];
}
}
}
return target;
}