如何访问此封装值?

时间:2013-03-02 01:41:09

标签: node.js

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

通过这种方法,我需要访问模块中包含的数组(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);

2 个答案:

答案 0 :(得分:1)

this.MyArray有效。

MyModule.test绑定到this等于module.exports

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

MyModule.js

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);