简体   繁体   English

在对象上调用匿名函数

[英]Call anonymous function on object

Normally I do callbacks like this: The Object that invokes the callback has this methods: 通常,我会像这样进行回调: 调用回调对象具有以下方法:

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);
}

Then In When I setup the Object I assgin the callback like this: 然后在当我设置对象时 ,像这样设置回调:

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

This works as expected. 这按预期工作。 But when I want to define the callback like this: 但是当我想这样定义回调时:

  obj.set_success_callback(this, this.sayHello);

And change the make_success_callback function to: 并将make_success_callback函数更改为:

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

I get this error: 我收到此错误:

Object [object Object] has no method 'call'

What do I have to change to make it work? 我必须进行哪些更改才能使其正常工作? How can I invoke the function sayHello on this? 如何在此调用函数sayHello? Thanks 谢谢

You just mixed up the object with the function. 您只是将对象与函数混合在一起。 It should be: 它应该是:

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

A Function has a .call() method , that takes a context object as the first argument. Function具有.call()方法 ,该方法将上下文对象作为第一个参数。 Object has no .call() method. Object没有.call()方法。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM