1

我正在使用属于模块的方法作为来自服务器的函数中的回调。

MyArray通过这种方法,我需要访问封装在模块 ( )中的数组。

我不能使用this,因为它指的是原始函数(someFunction在我的示例中)。that: this但我不明白为什么在这种情况下我不能使用该功能( that is undefined)。

MyModule.js

module.exports = {
  MyArray: [],
  that: this,
  test: functiion() {
    //How to access MyArray ?
  }
};

服务器.js

var MyModule = require('MyModule');
someFunction(MyModule.test);
4

2 回答 2

1

this.MyArray作品。

MyModule.test必然this等于module.exports

您也可以只在模块中使用局部变量。

MyModule.js

var MyArray = [];

module.exports = {
  test: function() {
    // MyArray is accessible
  }
};

你也可以使用module.exports.MyArray.

于 2013-03-02T01:43:09.163 回答
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);
于 2013-03-02T02:49:39.397 回答