首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Node.js中克隆对象

在Node.js中克隆对象
EN

Stack Overflow用户
提问于 2011-02-20 15:08:05
回答 17查看 187.2K关注 0票数 226

在node.js中克隆对象的最佳方法是什么

例如,我想要避免以下情况:

var obj1 = {x: 5, y:5};
var obj2 = obj1;
obj2.x = 6;
console.log(obj1.x); // logs 6

对象可能包含复杂的类型作为属性,所以简单的for(obj1中的变量x)不能解决问题。我需要自己写一个递归克隆吗?还是有一些我看不到的内置的东西?

EN

回答 17

Stack Overflow用户

发布于 2015-12-04 02:42:19

我很惊讶Object.assign没有被提及。

let cloned = Object.assign({}, source);

如果可用(例如,巴别塔),您可以使用object spread operator

let cloned = { ... source };
票数 294
EN

Stack Overflow用户

发布于 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.

票数 24
EN

Stack Overflow用户

发布于 2013-06-24 19:45:33

var obj2 = JSON.parse(JSON.stringify(obj1));
票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5055746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档