在javascript类中设置回调函数

ed2*_*209 6 javascript class callback

原谅伪代码,我的实际文件要大得多:/

我想从类中调用一个函数(带参数).但是,该函数应作为变量传递给类.

someObject = {
    itWorked:function(answer){
       alert(answer);
    },

    plugins:{
        somePlugin:function(){

            var callback;
            this.doSomething = doSomething;

            function setCallback(c){
                callback = c;
            }

            function doSomething(){
                 var answer = "hello";
                 [callback](answer); // how do I call this?
            }

        }
    },

    widgets:{
        something:function(){
            var doIt = new someObject();
            doIt.setCallback(someObject.itWorked()); // how do I send this?
            doIt.doSomething();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

那我怎么会itWorked()上课呢?我如何itWorked(answer)在类中调用该函数以及将变量传递给if?

JJJ*_*JJJ 1

删除括号以将函数作为变量传递。

doIt.setCallback( someObject.itWorked );
Run Code Online (Sandbox Code Playgroud)

然后,您可以像使用任何其他函数一样使用回调。

callback( answer );
Run Code Online (Sandbox Code Playgroud)

  • 您还应该检查回调是否存在,并且是一个可执行函数:`if (callback && typeof(callback) === "function") {}` (2认同)