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);
Надеется, что это помогает.
Вы передаете объект со свойством, но ожидаете функцию ... – Bergi
Какое требование стоит за этим? –