如何创建一个接受参数作为函数的函数?
我有这个功能,我想用函数的参数调用它:
function ShowDialog(OnSubmit)
{
var _result = OnSubmit();
alert(_result);
}
这就是我想要的:
ShowDialog(
{
OnSubmit: function () {
return "Hello World";
}
}
);
this will alert "Hello World in browser"
答案 0 :(得分:4)
呼叫:
ShowDialog(function(){
return "Hello World";
});
然后你的功能可以保持为:
function ShowDialog(OnSubmit)
{
var _result = OnSubmit();
alert(_result);
}
答案 1 :(得分:1)
请改为尝试:
function ShowDialog(param)
{
var _result = param.OnSubmit();
alert(_result);
}
ShowDialog({
OnSubmit: function () {
return "Hello World";
}
});
答案 2 :(得分:1)
JavaScript有first-class functions,所以你可以直接传递函数引用,不需要对象:
function showDialog(callback) {
var result = callback();
alert(result);
}
function bye() { return "bye!" };
showDialog(function() { return "Hello!" });
showDialog(bye);
var greetings = { ciao: function() { return "Ciao!" } };
showDialog(greetings.ciao);
当然你也可以传递完整的对象,在这种情况下你需要修改函数如下:
function showDialog(options) {
var result = options.onSubmit();
alert(result);
}
然后:
showDialog({
onSubmit: function() { return "Hello!" }
});
showDialog({
onSubmit: bye
});
您还可以实现一个接受对象和回调的函数:
function showDialog(options) {
var result = typeof options === 'function' ? options() : options.onSubmit();
alert(result);
}
showDialog({
onSubmit: bye
});
showDialog(bye);
希望它有所帮助。