js复制object类型时,如果直接使用赋值,则会变成引用,如果想创建一个新对象,则要复制里面每一个元素查询之后,发现两种现成的方式:转为json再转回来newObject=JSON.parse(JSON.stringify(oldObject))使用Object.assign()newObject=Object.assign({},oldObject)两种都可以达成,不知道哪一种比较好用?在执行速度上面
2 回答

慕桂英4014372
TA贡献1871条经验 获得超13个赞
首先指出一点错误,Object.assign({},oldObject)不是深拷贝,而是浅拷贝。深拷贝方法很多,选一种适合的业务场景的就行了。1、使用JSON.parse(JSON.stringify(obj))。不能拷贝值为null,undefined,函数字段。2、使用MessageChannel+postMessage,通过消息队列传递数据,实现深拷贝。不能拷贝函数。3、手写一个深拷贝,解决上述方案的问题。案例
添加回答
举报
0/150
提交
取消