遍历对象for(var o in Obj)
1、判断是不是原始值 typeOf() object
2、判断数组还是对象 instanceof toString constructor
3、建立相应的数组和对象
递归
obj = {
a: '1',
b: {
c: 2,
d: [11,2,3,4]
}
}
obj2 = {}
function deepClone(origin, target) {
var target = target || {},
toStr = Object.prototype.toString,
arraStr = "[object Array]";
for (var prop in origin) {
if (origin.hasOwnProperty(prop)) {
if (typeof(origin[prop]) == 'object') {
if (toStr.call(origin[prop]) == arraStr) {
target[prop] = []
} else {
target[prop] = {}
}
deepClone(origin[prop], target[prop])
} else {
target[prop] = origin[prop]
}
}
}
}
deepClone(obj, obj2)