我想要一个模块并以某种方式传入当前模块或类似的东西,这样所需的模块具有模块所需的属性。
例如,如果我有一个我需要的文件:
(function(global) {
console.log(this.exists);
}(this));
并且要求它如此:
this.exists = "I exist.";
var myFile = require("my-file"); // Somehow make require pass in 'this'.
所需的文件应该能够看到this.exists
,因为我已经以某种方式将this
传递到require
函数中。我不确定这是否可行。我认为你需要摆弄不同的module
对象。
这个的一个限制是所需的模块不能有任何nodejs
特定的东西,比如将代码输出到模块上的代码。它必须与我编写它的方式保持一致。
修改
事实证明,没有办法按照我想要的方式做到这一点。不过,对于如何以其他方式执行此操作,已经提出了一些很棒的建议。
答案 0 :(得分:1)
我必须做一次与此类似的事情......我想通过间接水平的最佳方式。
<强>第1部分:强>
define(function() {
"use strict";
function init() {
console.log("this = " + this);
}
return init;
});
<强>第2部分:强>
var myFileInit = require("my-file");
var myFile = myFileInit.init.call(this);
编辑:另一种可能性
为原始模块创建一个包装器:
// my-file-wrapper
define(["my-file"], function(myFunc) {
"use strict";
function init() {
myFunc.call(this);
}
return init;
});
// Elsewhere
var myFileWrapper = require("my-file-wrapper");
var myFile = myFileInit.init.call(this);