const main = ()=>{
const a = ()=>{
console.log("A")
}
const b = {
a,
s:1
}
fb(b)
console.log(b.a)
}
const fb = (o)=>{
const back = o.a
o.a=null
o=JSON.parse(JSON.stringify(o))
o.a=back
return o
}
main()
解释一下,fb 的作用是把对象中不能序列化的那部分暂存,序列化并复制到新对象后放回去
我知道这种深复制很耗性能,但问题在于,输出的永远是 null
更奇怪的是,在 fb 的返回处设置断点,可以看见 o.a 是我们的 function,但是返回上一个函数栈后,这个值突然就变空了
解决的办法是,把深复制去掉,或者是改成 b = f(b)
那么有没有比较官方的原因解释呢
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.