联系前方录:微信/QQ:34419369QQ交流群:632528856
Skip to content
原生js实现对象和数组等所有数据类型的深度克隆
代码如下
function deepClone(origin, target) {
var target = target || {};
for (var prop in origin) {
var typ = Object.prototype.toString.call(origin[prop]);
if (typeof origin[prop] != "object" || origin[prop] + "" == "null") {
target[prop] = origin[prop];
} else if (typ.indexOf("Array") != -1 || typ.indexOf("Object") != -1) {
if (typ.indexOf("Array") != -1) {
target[prop] = [];
} else if (typ.indexOf("Object") != -1) {
target[prop] = {};
}
deepClone(origin[prop], target[prop]);
} else {
var funStr = typ.slice(8, typ.length - 1);
console.log(funStr, origin[prop]);
target[prop] = eval("new " + funStr + "(origin[prop])")
}
}
return target;
}