如何将此上下文绑定到自调用函数?

时间:2016-06-23 09:49:54

标签: javascript

我试图从像这样的自调用函数中获取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()进行处理?

3 个答案:

答案 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)();