//遍历对象 for(var prop in obj)
-
判断是不是原始值 typeof() object
-
判断是数组还是对象 instanceof toString constructor
-
建立相应的数组或对象
-
递归
function deepClone(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 ? [] : {}; deepClone(origin[prop],target[prop]); }else{ target[prop] = origin[prop]; } } } return target; }
例如:
var obj = {
name : “abc”,
age : 123,
card : [‘visa’, ‘master’],
wife : {
name : “bcd”,
son : {
name : “aaa”
}
}
}
var obj1 = {
}
deepClone(obj, obj1);