function deepClone(obj) {
var objClone = Array.isArray(obj) ? [] : {};
if (obj && typeof obj === 'object') {
//for ... in会把继承的属性一起遍历
for (let key in obj) {
//判断是否是自有属性,而不是继承属性
if (obj.hasOwnProperty(key)) {
//判断 obj子元素是否为对象或数组,如果是,递归复制
if (obj[key] && typeof obj[key] === 'object') {
objClone[key] = deepClone(obj[key]);
} else {
//如果不是,简单复制
objClone[key] = obj[key];
}
}
}
}
return objClone;
}
var obj = [
[1, 2], {
a: 3,
b: {
c: 1
}
}
];
var obj2 = deepClone(obj);
手工实现深拷贝 deepClone
猜你喜欢
转载自blog.csdn.net/zyxzp2012/article/details/89539246
今日推荐
周排行