オブジェクトの関数内にいて、外部関数を呼び出して関数への参照を引数として渡す必要があります。この最後の関数引数はキーワードthis
を数回使用しているため、オブジェクトにスコープを設定する必要があります。私はこれを解決しました:
MyObj.prototype.internalFunc= function(data){
this.doSomethingWithReturnedData(data);
};
MyObj.prototype.doSomething= function(){
var $this = this;
externalFunction(this.someVar, function(data){ $this.internalFunc(data); });
};
var objInst = new MyObj();
objInst.doSomething();
この厄介なことを避けるために離れているかどうか知りたいvar $this = this
です。
私も次のことを思いました:
//... (same as before)
MyObj.prototype.doSomething= function(){
var $this = this;
externalFunction(this.someVar, this.internalFunc, this);
};
//... (same as before)
と
function externalFunction(arg1, cbfunc, thisref){
//bla bla things
cbfunc.call(thisref, blablaData);
};
しかし、私はそれが面倒だとも思います。
もっと良い方法があると思いますが、私はそれを見ていません! 前もって感謝します!