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

发布于 2024-11-28 12:35:28 字数 434 浏览 2 评论 0原文

如果我创建一个 Node.js 模块“augs”,其中包含

Object.foo = "bar";

然后输入 REPL,

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

我会返回 'undefined'

我们的 Web 应用程序中有大量代码依赖于添加到 ObjectFunctionDate 等的便捷方法。尝试在前端和后端之间共享一些代码,但 Node 似乎重置了这些构造函数,或者以某种方式阻止给定模块中对它们的更改泄漏到其他模块中。虽然这非常聪明,而且我很欣赏这种保护级别,但有没有办法说“我知道我在做什么;请让我增强 Object”?

If I create a Node.js module "augs" that contains

Object.foo = "bar";

Then type in the REPL

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

I get back 'undefined'.

We have a significant amount of code in our web app that relies on convenience methods added to Object, Function, Date, etc. We're trying to share some code between the frontend and the backend, but it seems like Node resets these constructor functions, or somehow otherwise prevents changes to them in a given module from leaking into other modules. While this is pretty smart and I appreciate the level of protection, is there some way to say "I know what I'm doing; please let me augment Object"?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

掐死时间 2024-12-05 12:35:28

假设 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

Assuming augs.js contains the following:

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

Augment Object like this:

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

Note: Assume you also export the following function:

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

Then:

> var aug = require("./augs.js")
> aug.getObject() == Object
false
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文