在其中一个节点示例中,我遇到了以下行
const extend = require('util')._extend;
任何人都可以解释一下_extend方法' util'节点模块?
答案 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;
};
因此,它结合了上述代码段中origin
和add
参数的属性,并返回了扩展对象。