我正在使用一个属于模块的方法作为我服务器函数的回调。
通过这种方法,我需要访问模块中包含的数组(MyArray
)。
我无法使用this
,因为它引用了原始函数(在我的示例中为someFunction
)。
但我不明白为什么我不能在这种情况下使用that: this
功能(that is undefined
)。
MyModule.js
module.exports = {
MyArray: [],
that: this,
test: functiion() {
//How to access MyArray ?
}
};
server.js
var MyModule = require('MyModule');
someFunction(MyModule.test);
答案 0 :(得分:1)
this.MyArray
有效。
MyModule.test
绑定到this
等于module.exports
您也可以在模块中使用局部变量。
var MyArray = [];
module.exports = {
test: function() {
// MyArray is accessible
}
};
您还可以使用module.exports.MyArray
。
答案 1 :(得分:0)
您可以使用bind
绑定您想要该功能的this
,这样即使将其用作回调,this
也是正确的:
<强> MyModule.js 强>
module.exports = {
MyArray: []
};
module.exports.test = (function() {
console.log(this.MyArray); // works here even when not called via MyModule.test
}).bind(module.exports);