通常我会做这样的回调:调用回调的对象有这样的方法:
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);
}
然后在我设置对象时,我会像这样调用回调:
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?感谢
答案 0 :(得分:2)
您只是将对象与功能混合在一起。它应该是:
this.success_callback_func.call(this.success_callback_ob, msg)
Function
有.call()
method,它将上下文对象作为第一个参数。 Object
没有.call()
方法。