为什么这个深拷贝无法得到函数func: function(){return 1}
是不是函数无法复制?
fucntion deepClone(source) {
var targetObj = {};
for(var keys in source) {
if(source.hasOwnProperty(keys)) {
if(source[keys] && typeof source[keys] === 'object') {
targetObj[keys] = deepClone(source[keys]);
}else{
targetObj[keys] = source[keys];
}
}
}
return targetObj;
}
var o1 = {
arr: 1,
obj: {
key: 'value'
},
func: function(){
return 1;
}
}
var o3 = deepClone(o1);
console.log(JSON.stringify(o3));
这个
deepClone
函数并没有对函数进行拷贝,只是返回了它的引用JSON.stringify()
在遇到不安全的JSON值会自动将其忽略,在数组中则会返回null(以保证单元位置不变)。具体可以参考这篇我的这篇文章