Open chenshuhong opened 4 years ago
深拷贝最简单版本
JSON.parse(JSON.stringify(source));
function isObject(obj) {
return typeof obj === 'object' && obj != null;
}
var deepCopy = function(obj) {
if (!isObject(obj)) return obj;
var newObj = obj instanceof Array ? [] : {};
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
newObj[key] = typeof obj[key] === 'object' ? deepCopy(obj[key]) : obj[key];
}
}
return newObj;
}
处理循环引用和引用丢失 解决方案很简单,其实就是循环检测,我们设置一个数组或者哈希表存储已拷贝过的对象,当检测到当前对象已存在于哈希表中时,取出该值并返回即可。
递归爆栈问题 广度优先或者循环代替递归
JavaScript之深浅拷贝 浅拷贝