'这' browserify模块中的上下文

时间:2016-02-23 23:13:43

标签: javascript browserify

在一个简单的browserify应用中,我想使用this关键字来引用导出对象中的其他功能,但它似乎并没有像我一样工作#39; d期望它:

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

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

我知道我可以将对象本身导出到window,或者让它成为可以引用的命名变量,但我想了解为什么上面的代码没有#&# 39;工作。

非常感谢!

2 个答案:

答案 0 :(得分:1)

设置"这个"对象你需要调用这个函数作为对象属性,比如 foo.a() 或者使用call / apply来明确设置"这个" bar.a.apply(foo,[args])

答案 1 :(得分:0)

你快到了。将您的代码更改为下方,它可以正常工作。

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