<script>
function deepClone(source) {
// 1.判断传入的是否是引用数据类型(Array, Object)
const newObj = source.constructor === Array ? [] : {}
// 2.循环里面的每一项,三种可能,可能是基本数据类型或数组或对象
for (let keys in source) {
// hasOwnProperty检查自有属性,不会沿着原型链查找
if (source.hasOwnProperty(keys)) {
//属于引用数据类型,如果source有值且,值属于对象
if (source[keys] && typeof source[keys] === 'object') {
newObj[keys] = deepClone(source[keys])
} else {
// 属于基本数据类型直接赋值
newObj[keys] = source[keys]
}
}
}
return newObj
}
</script>
用递归手写深拷贝
最新推荐文章于 2024-06-02 21:27:33 发布