在node.js中克隆对象的最佳方法是什么
例如,我想要避免以下情况:
var obj1 = {x: 5, y:5};
var obj2 = obj1;
obj2.x = 6;
console.log(obj1.x); // logs 6
对象可能包含复杂的类型作为属性,所以简单的for(obj1中的变量x)不能解决问题。我需要自己写一个递归克隆吗?还是有一些我看不到的内置的东西?
发布于 2015-12-04 02:42:19
我很惊讶Object.assign
没有被提及。
let cloned = Object.assign({}, source);
如果可用(例如,巴别塔),您可以使用object spread operator
let cloned = { ... source };
发布于 2011-02-20 17:38:41
Object.defineProperty(Object.prototype, "extend", {
enumerable: false,
value: function(from) {
var props = Object.getOwnPropertyNames(from);
var dest = this;
props.forEach(function(name) {
if (name in dest) {
var destination = Object.getOwnPropertyDescriptor(from, name);
Object.defineProperty(dest, name, destination);
}
});
return this;
}
});
这将定义一个您可以使用的扩展方法。代码来自from this article.
发布于 2013-06-24 19:45:33
var obj2 = JSON.parse(JSON.stringify(obj1));
https://stackoverflow.com/questions/5055746
复制相似问题