如果我创建一个包含的Node.js模块“augs”
@H_404_5@Object.foo = "bar";
然后输入REPL
@H_404_5@require("./augs");
typeof Object.foo
我回来’未定义’.
我们的Web应用程序中有大量代码依赖于添加到Object,Function,Date等的便捷方法.我们尝试在前端和后端之间共享一些代码,但似乎Node重置了这些构造函数或以某种方式以其他方式阻止给定模块中的更改泄漏到其他模块中.虽然这很聪明,我很欣赏保护程度,有没有办法说“我知道我在做什么;请让我加强对象”?
最佳答案
假设augs.js包含以下内容:
@H_404_5@
exports.augment = function(o) {
o.foo = "bar";
}
像这样的增强对象:
@H_404_5@> var aug = require("./augs.js");
> aug.augment(Object);
> typeof Object.foo
'string'
注意:假设您还导出以下函数:
@H_404_5@exports.getObject = function () {
return Object;
}
然后:
@H_404_5@> var aug = require("./augs.js")
> aug.getObject() == Object
false