假设我有一个以下形式的javascript函数:
function(){alert("blah");}
假设我还有一个applet,它有一个名为doStuff的方法,它将该函数作为参数:
MyApplet.doStuff(function(){alert("blah");});
现在假设applet将函数传递给成功或失败的javascript回调函数,具体取决于其计算结果。在该回调函数中,我想执行该函数,以便用户获得我非常有用的信息“blah”:
function callback(func) {
func();
}
但是,在上面的例子中,func不再被认为是“function”类型(typeof func将返回“object”)。是否可以将func转换为函数以便可以执行?我有很多黑客可以给我我想要的东西,但是它们非常难看,我希望我错过了一些简单的东西。
非常感谢任何帮助。
答案 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函数以便它保留其“函数”类型,那么有没有人知道他们的头脑?