// 判断arr是否为一个数组,返回一个bool值
function isArray (arr) {
return Object.prototype.toString.call(arr) === '[object Array]';
}
// 深度克隆
function deepClone (obj) {
// 对常见的“非”值,直接返回原来值
if([null, undefined, NaN, false].includes(obj)) return obj;
if(typeof obj !== "object" && typeof obj !== 'function') {
//原始类型直接返回
return obj;
}
var o = isArray(obj) ? [] : {};
for(let i in obj) {
if(obj.hasOwnProperty(i)){
o[i] = typeof obj[i] === "object" ? deepClone(obj[i]) : obj[i];
}
}
return o;
}
export default deepClone;
JS实现深度克隆
最新推荐文章于 2024-11-02 12:42:04 发布
本文介绍了JavaScript中的深拷贝函数deepClone,该函数用于递归地创建一个对象或数组的副本,同时处理了null、undefined、NaN和false等非对象类型的直接返回。函数首先检查输入类型并进行相应的处理,然后使用for...in循环遍历对象并递归地复制子属性。
摘要由CSDN通过智能技术生成