Node.js向对象添加多个属性

时间:2013-07-05 03:49:41

标签: javascript node.js

我想知道是否有更好的方法:

module.exports.foo = "bar";
module.exports.bar = "baz";
module.exports.foobar = "foobaz";

现在,我听说过'with'(和它的危险)但它在这里不起作用,因为它无法向对象添加新属性,它只能更改现有属性。事实上,如果你试图添加新的属性,你最终会破坏封闭的范围,这不是很好。

这样的事情会很好:

module.exports += {
  foo: "bar",
  bar: "baz",
  foobar: "foobaz"
}

但是,在连接它们之前将双方转换为字符串,这不是我想要的。

Node.JS风格的JavaScript中是否存在这样的语法糖?也许是'模块'上的一个函数可以一次添加很多属性?

3 个答案:

答案 0 :(得分:3)

您可以编写一个简单的函数来循环它们并将它们添加到module.exports,或者您可以尝试node.extend尝试模仿jquery的$.extend()

答案 1 :(得分:1)

使用Object.assign()

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

如果您使用的是后一种方法,请务必检查边缘情况,我没有在这里!