在对象上调用匿名函数

时间:2015-06-21 09:12:38

标签: javascript node.js function anonymous-function

通常我会做这样的回调:调用回调的对象有这样的方法:

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?感谢

1 个答案:

答案 0 :(得分:2)

您只是将对象与功能混合在一起。它应该是:

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

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