我想知道是否有更好的方法:
module.exports.foo = "bar";
module.exports.bar = "baz";
module.exports.foobar = "foobaz";
现在,我听说过'with'(和它的危险)但它在这里不起作用,因为它无法向对象添加新属性,它只能更改现有属性。事实上,如果你试图添加新的属性,你最终会破坏封闭的范围,这不是很好。
这样的事情会很好:
module.exports += {
foo: "bar",
bar: "baz",
foobar: "foobaz"
}
但是,在连接它们之前将双方转换为字符串,这不是我想要的。
Node.JS风格的JavaScript中是否存在这样的语法糖?也许是'模块'上的一个函数可以一次添加很多属性?
答案 0 :(得分:3)
您可以编写一个简单的函数来循环它们并将它们添加到module.exports,或者您可以尝试node.extend尝试模仿jquery的$.extend()
答案 1 :(得分:1)
Object.assign(module.exports, {
foo: "bar",
bar: "baz",
foobar: "foobaz"
});
答案 2 :(得分:0)
考虑使用_.extend
所以在你的例子中:
module.exports += {
foo: "bar",
bar: "baz",
foobar: "foobaz"
}
将是:
var _ = require('underscore');
_.extend(module.exports,
{
foo: "bar",
bar: "baz",
foobar: "foobaz"
}
);
或者,如果您不想要任何依赖项,请使用原始javascript:
function myExtend(dest, obj) {
for (key in obj) {
var val = obj[key];
dest[key] = val;
}
}
myExtend(module.exports,
{
foo: "bar",
bar: "baz",
foobar: "foobaz"
}
);
如果您使用的是后一种方法,请务必检查边缘情况,我没有在这里!