'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();
})();
在一个简单的 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();
})();