我试图从像这样的自调用函数中获取this
// this is defined here and works just fine.
(function(){
this.doSomething()
// this is undefined here.
}/*tried .bind(this) here, but it didn't seem to help*)();
实际功能有点复杂,但这是问题的简化示例。
我如何将this
上下文传递给一个自调用函数,如上面的函数,除了函数外的var self = this
,然后从内部将其作为self.doSomething()
进行处理?
答案 0 :(得分:0)
你尝试的方式应该可以正常工作。我创建了一个名为test
的小包装函数来演示:
function test() {
(function(){
this.doSomething()
}.bind(this))(); // bind this here
}
test.call({
doSomething: function() {
console.log('hello world');
}
}); // call test with a dummy object as this
答案 1 :(得分:0)
我认为.bind()方法不适用于自调用函数。所以我的工作就是这个......
var that = this;
(function(that){
that.doSomething()
})(that);
将'this'命名为'self',或者在我的例子中'that',因为如果你在自调用函数中使用'this'关键字,它会将'this'引用到自调用函数。所以只需通过参数将变量传递给自调用函数。我希望这会有所帮助。
答案 2 :(得分:0)
您可以执行以下操作:
(function () {
this.doSomething();
}).call(yourThis);
,如果您真的想使用bind
(function () {
this.doSomething();
}).bind(yourThis)();