js 深复制选择哪种方法怎么回事哈啊?

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

慕村225694

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

饮歌长啸

看着可以,其实这两种都不行。1会把非JSON格式的数据(func,undefined等)丢失2除非循环的执行,否则内部的引用变量还是会被改变
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript