问一个js操作Object问题
发布于 9 年前 作者 im-here 4969 次预览 最后一次回复是 9 年前 来自 问答
我在一个js文件里定义了一个Object(假如为o),用o来存一些数据,当然这些数据一直在内存中存在。然后我在别的地方会调用这个js然后来对o做一些操作,可能是改变o里某些属性的值,或者是新增属性,或者是删除属性。 问题是:我如何保证我在删除或修改的时候不改变原来o里所有的数据。 我发现我复制一个o出来,改变这个复制对象的时候o也改变了。
11 回复
我在一个js文件里定义了一个Object(假如为o),用o来存一些数据,当然这些数据一直在内存中存在。然后我在别的地方会调用这个js然后来对o做一些操作,可能是改变o里某些属性的值,或者是新增属性,或者是删除属性。 问题是:我如何保证我在删除或修改的时候不改变原来o里所有的数据。 我发现我复制一个o出来,改变这个复制对象的时候o也改变了。
请复习,深复制和浅复制 From Noder
@jimliang 搞定了,多谢!
lodash 你值得拥有
来自酷炫的 CNodeMD
@klesh 我也有用lodash,但不知道它有复制Object的api么?
直接有个 clone 啊,像 defaults assign merge 等都可以达到相同的目的,看你的需要选择使用。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
@klesh 多谢!
@baka397 链接404
@imhered 复制有点问题,我改了下
这个是引用内存地址的,所以你改了这个,前面那个也跟着改了
@baka397 3q