変数の値の名前で関数を呼び出し、呼び出されたときに this スコープを保持するコードをいじっていますが、 this ポインターは、jQuery の bind メソッドではなく、使用した要素のコンテキストにあるようです呼び出している可能性のある関数が含まれているオブジェクトです。ここで問題を説明するためのいくつかのコードを明確にするために:
classname.prototype = {
bindElementToFunction: function(element, functionToCall){
$(element).bind("click",
{realThis: this, functionToCall: functionToCall},
this.callFunction);
},
// I had hoped I could change the this pointer back to the object by running
// it through this function, I have tried using .apply and .call but I can't
// seem to get them to work with function pointers
callFunction: function(event){
var realThis = event.data.realThis;
var functionToCall = event.data.functionToCall;
functionToCall = realThis[functionToCall];
// I have tried .apply and .call in several different ways but can't seem
// to get them to work in this context
functionToCall();
},
abitraryFunction: function(){
this.test();
},
};
ここでの問題は、バインド関数からの要素をまだ参照している abitraryFunction まで、すべてが正常に機能することです。適切な this ポインターを使用して .apply() を実行しようとしましたが、機能していないようです。
では、関数ポインターと組み合わせて「this」ポインターのコンテキストを変更するにはどうすればよいですか? 「this」がメソッドが含まれるオブジェクトを参照しているオブジェクト内でメソッドを実行する要素にバインド関数を実行できる限り、私が書いたすべてのコードを自由に破棄してください。
ありがとう