将javascript对象分配给新对象作为副本
我有这个在obj.arr
对象的数组。 我把它分配给一个新的对象。
var obj_arr_new = obj.arr;
问题是当我修改obj_arr_new
, obj.arr
被修改了。 我不要那个。 我怎样才能使obj_arr_new
成为obj_arr_new
的副本,当我修改obj_arr_new
, obj.arr
是不变的?
我正在使用node.js v6。 我打开使用任何node.js模块。 有人告诉我lodash可以做这个工作。 使用lodash的答案是有帮助的。
Lodash的确有一个_.cloneDeep(value)
为此目的。
var obj_arr_new = _.cloneDeep(obj.arr);
它将以recursion方式克隆“数组,数组缓冲区,布尔值,date对象,映射,数字,对象对象,正则expression式,集合,string,符号和types数组”,以便修改克隆的位不会影响原始数据,反之亦然。
文档
我倾向于使用以下方法创build副本:
var copiedObject = JSON.parse(JSON.stringify(originalObject));
这只适用于JSONable对象,但如果你正在处理string,数组等,那么它的罚款,即不是如果你有函数作为你正在复制的对象的子项。