【发布时间】:2011-06-30 15:45:12
【问题描述】:
在 node.js 中克隆对象的最佳方法是什么
例如我想避免以下情况:
var obj1 = {x: 5, y:5};
var obj2 = obj1;
obj2.x = 6;
console.log(obj1.x); // logs 6
该对象很可能包含复杂类型作为属性,因此简单的 for(var x in obj1) 无法解决。我是否需要自己编写一个递归克隆,或者是否有一些我没有看到的内置内容?
【问题讨论】:
-
1.
npm install underscore2.var _ = require('underscore')3._.clone(objToClone); -
请注意,在上面@SalmanPK 的评论中,这是一个 shallow 克隆。所以它适用于 slifty 的例子,但如果有嵌套的数组或对象,它们将是引用。 ://
-
@Jordan Hudson - 在第二个示例中很好地使用了 JSON。 var newObj = JSON.parse(JSON.stringify(oldObj)); //现在newObj是一个克隆。唯一的问题是 stringify 不适用于递归引用,所以需要小心。
标签: javascript node.js