方法一
var newObj = JSON.parse(JSON.stringify(sourceObj));
缺点:
- 无法对对象中的函数, 正则表达式, 稀松数组等特殊对象进行克隆
- 会使得所有对象的constructor都指向Object
- 如果对象有循环引用, 会报错
方法二
function deepClone(target) {
let result;
let type = Object.prototype.toString.call(target);
if (type === '[object Object]') {
result = {};
} else if (type === '[object Array]') {
result = [];
} else {
return target;
}
for (let attr in target) {
result[arrt] = deepClone(target[attr]);
}
return result;
}
缺点: 同样未能处理特殊对象, 比如属性是个正则对象, 日期对象, 函数等情况
网友评论