在对象上调用匿名函数

Call anonymous function on object

通常我会这样执行回调: 调用回调的对象 具有以下方法:

this.set_success_callback = function(obj, func){
    this.success_callback_obj  = obj;
    this.success_callback_func = func;
}

this.make_success_callback = function(msg){
    this.success_callback_obj[this.success_callback_func](msg);
}

然后在我设置 Object 时,我会这样调用回调:

 var obj = new ...
     obj.set_success_callback(this, "sayHello");

这按预期工作。 但是当我想这样定义回调时:

  obj.set_success_callback(this, this.sayHello);

并将make_success_callback函数更改为:

 this.success_callback_ob.call(this.success_callback_func, msg)

我得到这个错误:

Object [object Object] has no method 'call'

我需要更改什么才能使其正常工作?我如何在此调用函数 sayHello?谢谢

您只是混淆了对象和函数。应该是:

this.success_callback_func.call(this.success_callback_ob, msg)

A Function 有一个 .call() method,它将上下文对象作为第一个参数。 Object 没有 .call() 方法。