obj用老师给的代码进行深拷贝时,遇到function就不行了
来源:2-2 typeof和深拷贝
古墨凝
2020-06-08
请问怎么拷贝函数呢?
function deepClone(obj = {}) {
if (typeof obj !== 'object' || obj == null) {
return obj // 这里如果是function就不行了,obj1改,obj2也会跟着改
}
let res
// 这里用Object.Prototype.toString.call+typeof更加合适
if (obj instanceof Array) {
res = []
} else {
res = {}
}
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
res[key] = deepClone(obj[key])
}
}
return res
}
写回答
1回答
-
深拷贝的目的,是拷贝数据对吧?
而 function 不是数据,是可执行模块,所以一般不会作为数据来存储,也一般不用于深拷贝中。
如果非要用于深拷贝,那也只能是如代码一样。
10
相似问题