2016-06-23 8 views
0

私は、実際の関数はもう少し複雑ですが、ここで問題の簡単な例である。このこのコンテキストを自己呼び出し関数にバインドする方法は?

// 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を取得しようとしています。

thisコンテキストを上記のような自己起動関数に渡すには、関数の外にvar self = this以外にself.doSomething()という名前の内部関数を指定する必要がありますか?

+0

'(function(self){ self.doSomething(); })(this);'? –

+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 
+0

複数のネストされた関数に問題があるように見えますが、私が共有したコードには問題がありません。 –

0

私は.bind()メソッドは、自己の呼び出し機能で動作することはないと思います。そのため周りの私の仕事はこれです...

var that = this; (function(that){ that.doSomething() })(that);

名「この」「自己」または私の例のように何か他のものにあなたが自己の呼び出し機能で「この」キーワードを使用している場合ので「こと」 'これ'を自己呼び出し関数に参照します。そのため、パラメータを介して変数を自己呼び出し関数に渡すだけです。私はこれが役立つことを願っています

関連する問題