javascript中的事件监听器

时间:2013-10-24 09:33:16

标签: javascript

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

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

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

    alert(_result);
}

这就是我想要的:

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

this will alert "Hello World in browser"

3 个答案:

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

希望它有所帮助。