繁体   English   中英

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

[英]Node.js adding multiple properties to an object

我想知道是否有更好的方法来做到这一点:

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

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

这样的事情会很好:

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

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

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

你可以写一个简单的函数来遍历它们并将它们添加到module.exports或者你可以尝试node.extend它试图模仿jQuery的$.extend()

使用Object.assign()

Object.assign(module.exports, {
              foo: "bar",
              bar: "baz",
              foobar: "foobaz"
            });

考虑使用_.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"
                }
            );

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM