Феликс уже ответил на вопрос выше. Вдохновленный его ответом и проблемой, с которой я столкнулся в текущем проекте, я написал небольшую суть, в которой есть класс, который добавляет немного дополнительной безопасности.
Подводя итог, вы передаете функцию обратного вызова так же, как вы передаете переменную. Затем приемник активирует его как функцию.
myCoolFunction: function( data ) {
// Do some thing with response
}
$.get( '/some/cool/url', myCoolFunction );
В приведенном выше примере $.get
перезванивает myCoolFunction
с параметром data
при получении данных
Что произойдет, если myCoolFunciton является переменной. Ну, это зависит от того, как приемник обрабатывает ввод.
Просто чтобы быть осторожным, у меня есть класс CoffeeScript (и его компиляция JavaScript), который будет выполнять некоторые проверки безопасности.
Он ничего не делает магическим, проверяет, является ли его функцией, и возвращает, если не возвращает пустую функцию, чтобы уменьшить вероятность ошибки JS. https://gist.github.com/ziyan-junaideen/8717925