_extend属性中的_extend属性节点模块

时间:2016-04-16 10:43:33

标签: node.js

在其中一个节点示例中,我遇到了以下行

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

任何人都可以解释一下_extend方法' util'节点模块?

2 个答案:

答案 0 :(得分:1)

低褶皱深拷贝:

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功能的源代码在这里:https://github.com/joyent/node/blob/master/lib/util.js

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;
};

有关详情,请点击EXTEND

希望这会对你有所帮助。

答案 1 :(得分:0)

除了上面Nitin提到的浅拷贝之外,它还结合了传递的参数的属性

来自util._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;
};

因此,它结合了上述代码段中originadd参数的属性,并返回了扩展对象。