'this' browserify 模块中的上下文

'this' context in browserify modules

在一个简单的 browserify 应用程序中,我想使用 this 关键字来引用导出对象中的其他函数,但它似乎无法正常工作期望它:

(function() {
  module.exports = {
    a: function() {
      console.log('Hello World');
    },
    b: function() {
      this.a(); // Problem: this is set to window.document
    }
  };
})();

我假设上面的代码可以工作,但似乎 this 设置为 window.document 而不是导出的对象。我很确定我过去曾用过这个,所以它可能很简单,但我有点卡住了!

我知道我可以将对象本身导出到 window,或者使它成为一个可以引用的命名变量,但我想了解为什么上面的代码不起作用.

非常感谢!

要将 "this" 设置为对象,您需要将此函数作为对象 属性 调用,例如 foo.a() 或使用 call/apply 明确设置 "this" bar.a.apply(foo,[args])

你快到了。将您的代码更改为以下并且它有效。

(function () {
   var module = new Object();
   module.exports = {
        a : function () {
            console.log('Hello World');
        },
        b : function () {
            this.a();
        }
   };
   module.exports.b();
})();