将javascript对象分配给新对象作为副本

我有这个在obj.arr对象的数组。 我把它分配给一个新的对象。

 var obj_arr_new = obj.arr; 

问题是当我修改obj_arr_newobj.arr被修改了。 我不要那个。 我怎样才能使obj_arr_new成为obj_arr_new的副本,当我修改obj_arr_newobj.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,数组等,那么它的罚款,即不是如果你有函数作为你正在复制的对象的子项。