我可以用“静态方法”扩展对象、函数、日期等吗?在节点

Can I augment Object, Function, Date, etc. with "static methods" in Node?

本文关键字:静态方法 节点 日期 函数 扩展 对象 我可以      更新时间:2023-09-26

如果我创建一个包含

的Node.js模块"augs"
Object.foo = "bar";

然后输入REPL

require("./augs");
typeof Object.foo

我得到了'undefined'

我们的web应用程序中有大量的代码依赖于添加到Object, Function, Date等的方便方法。我们试图在前端和后端之间共享一些代码,但Node似乎会重置这些构造函数,或者以某种方式防止对给定模块中的构造函数的更改泄漏到其他模块中。虽然这很聪明,我也很欣赏这种保护水平,但是否有办法说"我知道我在做什么;请让我增加Object"?

假设augs.js包含以下内容:

exports.augment = function(o) {
    o.foo = "bar";
}

像这样增加Object:

> var aug = require("./augs.js");
> aug.augment(Object);
> typeof Object.foo
'string'

注:假设您还导出以下函数:

exports.getObject = function () {
    return Object;
}

:

> var aug = require("./augs.js")
> aug.getObject() == Object
false