function deepClone(origin, target) {
var target = target || {};
var toStr = Object.prototype.toString;
var arrStr = "[object Array]";
for (var prop in origin) {
//判断是自身的属性
if (origin.hasOwnProperty(prop)) {
//判断是引用数据类型还是 原始数据类型
if (origin[prop] !== null && typeof (origin[prop]) === "object") {
//判断是数组还是对象
if (toStr.call(origin[prop]) === arrStr) {
//数组
target[prop] = []
} else {
//对象
target[prop] = {}
}
deepClone(origin[prop], target[prop]);
} else {
//原始数据类型
target[prop] = origin[prop];
}
}
}
//如果没有传入第二个参数 给返回target
return target;
}
使用例子:
var me = {
name: "xiaoming",
gender: "male",
feature: ["handsome", "young", "hardworking"],
address: {
city: "chengdu",
postcode: "610000",
},
girlFriend: {
name: "xiaoli",
gender: "female",
feature: ["beauty", "cute"],
address: {
city: "chengdu",
postcode: "610000",
}
}
};
var me2 = {};
deepClone(me, me2);
1.如需转载本站原创文章,请务必注明文章出处并附上链接,非常感谢。
2.本站用于记录个人 工作、学习、生活,非商业网站,更多信息请 点击这里
上一篇: es6箭头函数需要注意的地方
下一篇: 输入url后发生了什么
😮 😮 😮 😮 😮 😮