为了账号安全,请及时绑定邮箱和手机立即绑定

js 深复制选择哪种方法

js 深复制选择哪种方法

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

2 回答

?
弑天下

TA贡献1818条经验 获得超8个赞

首先指出一点错误,Object.assign({},oldObject)不是深拷贝,而是浅拷贝。
深拷贝方法很多,选一种适合的业务场景的就行了。
1、使用JSON.parse(JSON.stringify(obj))。不能拷贝值为null,undefined,函数字段。
2、使用MessageChannel+postMessage,通过消息队列传递数据,实现深拷贝。不能拷贝函数。
3、手写一个深拷贝,解决上述方案的问题。案例
                            
查看完整回答
反对 回复 2019-08-24
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

看着可以,其实这两种都不行。1会把非JSON格式的数据(func,undefined等)丢失2除非循环的执行,否则内部的引用变量还是会被改变
                            
查看完整回答
反对 回复 2019-08-24
  • 2 回答
  • 0 关注
  • 308 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信