Javascript从对象转换为函数

时间:2009-12-01 18:01:19

标签: javascript

假设我有一个以下形式的javascript函数:

function(){alert("blah");}

假设我还有一个applet,它有一个名为doS​​tuff的方法,它将该函数作为参数:

MyApplet.doStuff(function(){alert("blah");});

现在假设applet将函数传递给成功或失败的javascript回调函数,具体取决于其计算结果。在该回调函数中,我想执行该函数,以便用户获得我非常有用的信息“blah”:

function callback(func) {
  func();
}

但是,在上面的例子中,func不再被认为是“function”类型(typeof func将返回“object”)。是否可以将func转换为函数以便可以执行?我有很多黑客可以给我我想要的东西,但是它们非常难看,我希望我错过了一些简单的东西。

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

尝试使用func.call()

答案 1 :(得分:2)

使用与您已有的相同样式代码,以下内容应提醒“被叫!”:

function callback(func){
  func();
}
callback(function(){
  alert("called!");
});

是MyApplet.doStuff(function(){alert(“blah”);});肯定将其参数传递给回调函数不变?

答案 2 :(得分:0)

我选择了另一种不像我想象的那样丑陋的解决方案。 JSObject.call()java方法将所有回调函数参数转换为普通jane对象。所以不要传递:

function(){alert("blah")}

我现在通过了:

alert("blah")

或在一些烦人的逃避之后:

''alert(\''blah\'');''

没那么可怕啊?非常感谢所有提供帮助的人,非常感谢。但是,出于好奇,如果有可能通过JSObject将一些东西从java传递到javascript函数以便它保留其“函数”类型,那么有没有人知道他们的头脑?