VueJS 中,如何复制 Object?比如 Object2=Object1, 当修改 Object2 的值后, Object1 的值保持不变。

2017-05-13 15:29:50 +08:00
 ioioioioioioi
4305 次点击
所在节点    问与答
13 条回复
gzlock
2017-05-13 15:34:40 +08:00
两种办法
json.parse(json.stringify({}))
Object.assign({},原 object)
gongpeione
2017-05-13 15:39:57 +08:00
var obj2 = Object.create(obj1);
这样也可以,虽然不算是复制了
murmur
2017-05-13 15:50:04 +08:00
Object.assign 貌似是浅拷,npm 上有递归深拷的包,当然没有 function 的时候最好的就是先 stringify 再 parse
crysislinux
2017-05-13 15:54:58 +08:00
修改的时候就全用 assign,slice 之类的不改变原 object 的方式
ioioioioioioi
2017-05-13 16:07:08 +08:00
@gzlock
@gongpeione
@murmur
@crysislinux Object 含有子 Object,怎么处理?
Sivan
2017-05-13 16:09:20 +08:00
gzlock
2017-05-13 16:24:22 +08:00
@murmur #3
@ioioioioioioi #5 assign 是有点问题

那就用 JSON 两件套或者其它 npm 包来实现咯
SourceMan
2017-05-13 18:10:43 +08:00
json 性能有点差
crysislinux
2017-05-13 18:11:32 +08:00
@ioioioioioioi 有专门的包解决这个问题。大概是叫 immutability-helper 吧,最早是 react 的包,独立出来了
ruanyu1
2017-05-13 18:15:41 +08:00
o2 = {...o1}
seki
2017-05-13 18:17:00 +08:00
如果是单纯数据的话序列化和反序列化也足够了,lodash 也有 clone 方法
vue 中的 immutability 的重要性倒不是这么高
huihuimoe
2017-05-13 18:24:08 +08:00
wangjie
2017-05-13 19:09:42 +08:00
lodash +1

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/361089

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX