在Node.js中克隆对象?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (124)

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

想避免以下情况:

var obj1 = {x: 5, y:5};
var obj2 = obj1;
obj2.x = 6;
console.log(obj1.x); // logs 6
提问于
用户回答回答于

Object.assign 可以帮到你

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

如果可用(例如Babel),可以使用库类:

let cloned = { ... source };
用户回答回答于
var obj2 = JSON.parse(JSON.stringify(obj1));

原文::

可以使用Node的内置util._extend()功能。

var extend = require('util')._extend;

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

节点源代码_extend功能在这里:

exports._extend = function(origin, add) {
  // Don't do anything if add isn't an object
  if (!add || typeof add !== 'object') return origin;

  var keys = Object.keys(add);
  var i = keys.length;
  while (i--) {
    origin[keys[i]] = add[keys[i]];
  }
  return origin;
};

扫码关注云+社区

领取腾讯云代金券