Appearance
深拷贝
javascript
function deepClone(obj) {
if (obj === null || typeof obj !== 'object') {
return obj;
}
const newObj = obj instanceof Array ? [] : {};
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
newObj[key] = deepClone(obj[key]);
}
}
return newObj;
}
该函数接受一个参数 obj
,判断 obj
是否为 null 或非对象类型,如果是,直接返回 obj
;否则,根据 obj
的类型创建一个新对象 newObj
,然后遍历 obj
的属性,递归调用 deepClone
函数复制属性值,并将复制后的属性值赋给 newObj
对应的属性。最后返回 newObj
。
该函数能够递归复制多层嵌套的对象,包括普通对象、数组、Date 对象、RegExp 对象等,但是对于函数、Symbol、Map、Set 等复杂类型可能存在一些限制,需要根据具体情况进行处理。