在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)解决不了问题。我需要自己写一个递归克隆吗?还是有一些我没有看到的内置的东西?
在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)解决不了问题。我需要自己写一个递归克隆吗?还是有一些我没有看到的内置的东西?
当前回答
我很惊讶,客体。还没有提到Assign。
let cloned = Object.assign({}, source);
如果可用(例如Babel),你可以使用对象展开操作符:
let cloned = { ... source };
其他回答
你也可以使用这个克隆库来深度克隆对象。
npm install --save clone
const clone = require('clone');
const clonedObject = clone(sourceObject);
var obj2 = JSON.parse(JSON.stringify(obj1));
另一个解决方案是直接封装在新变量中使用: 其中obj1 ={…methoda}
你也可以在NodeJS中使用SugarJS。
http://sugarjs.com/
它们有一个非常干净的克隆特性: http://sugarjs.com/api/Object/clone
还有另一个库lodash,它有clone和cloneDeep。
Clone将克隆您的对象,但不会为非原语值创建一个新实例,而是使用对原始对象的引用
cloneDeep将在不引用原始对象的情况下创建新的对象,因此当您随后必须更改对象时更安全。