クラスまたは var オブジェクトの関数を引数として別の関数に渡しています。クラスから関数を取り込んだ関数がその関数を実行します。正常に動作しますが、クラスの関数はクラスから別の関数を呼び出します。コンソールは、クラス関数で呼び出されている関数が未定義であるというエラーを出力します。
以下は、もう少しよく説明するかもしれません
//the class variable in someClass.js
function(params...){
getSomethingInClass: function(){
// return some variable
}
functionThatIsPassed: function(arg){
var theCalledFunction = getSomethingInClass();
//do something with theCalledFunction
}
}
//SOME WHERE ELSE in another function in another file
OtherFunction: function(){
//someClass is a variable being used here
FunctionThatTakesFunction(this.someClassVar.functionThatIsPassed);
}
//FunctionThatTakesFunction is implemented in another file
FunctionThatTakesFunction(callbackFun){
callbackFun(someArg);
}
上記は、オブジェクト someClass オブジェクト全体を渡すように変更すると機能します。FunctionThatTakesFunction はその引数の関数を知る必要があるため、オブジェクトを渡すことはプログラミングの悪い方法です。たとえば
//THIS WORKS!
//other stuff is same
//SOME WHERE ELSE in another function in another file
OtherFunction: function(){
//someClass is a variable being used here
FunctionThatTakesFunction(this.someClassVar);
}
//FunctionThatTakesFunction is implemented in another file
FunctionThatTakesFunction(object){
object.functionThatIsPassed(someArg);
}