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);
それが役に立てば幸い。