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

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 に答える
1

代わりにこれを試してください:

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

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