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)
那么有没有比较官方的原因解释呢
