0

如何创建一个接受参数作为函数的函数?

我有这个函数,我也想用函数的参数调用它:

function ShowDialog(OnSubmit) 
{
    var _result = OnSubmit();

    alert(_result);
}

这就是我要调用的:

ShowDialog(
              {
                  OnSubmit: function () {
                      return "Hello World";
                  }
              }
          );

this will alert "Hello World in browser"
4

3 回答 3

4

称呼:

ShowDialog(function(){
   return "Hello World";
});

然后你的功能可以保持为:

function ShowDialog(OnSubmit) 
{
    var _result = OnSubmit();

    alert(_result);
}
于 2013-10-24T09:35:35.610 回答
1

试试这个:

function ShowDialog(param) 
{
    var _result = param.OnSubmit();
    alert(_result);
}

ShowDialog({
    OnSubmit: function () {
         return "Hello World";
    }
});
于 2013-10-24T09:35:17.060 回答
1

JavaScript 有一流的函数,所以你可以直接传递函数引用,不需要对象:

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

希望能帮助到你。

于 2013-10-24T09:46:14.063 回答