为什么这个深拷贝无法得到函数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));
3 回答
ibeautiful
TA贡献1993条经验 获得超5个赞
这个deepClone
函数并没有对函数进行拷贝,只是返回了它的引用
JSON.stringify()
在遇到不安全的JSON值会自动将其忽略,在数组中则会返回null(以保证单元位置不变)。
不安全的 JSON 值: undefined 、 function 、 symbol (ES6+)和包含循环引用(对象之间相互引用,形成一个无限循环)的 对象 都不符合 JSON 结构标准,支持 JSON 的语言无法处理它们
具体可以参考这篇我的这篇文章
添加回答
举报
0/150
提交
取消