Как вызвать callback функцию
Здравствуйте.
Пишу плагин для jQuery. Новые методы пишу в $.fn.extend({...}); В один из таких методов в качестве параметра передаю название следующей функции. Как вызвать такую функцию, название которой передал в параметре функции?
$obj.validateDate(saveStartDate);
$.fn.extend({
validateDate: function (сallBack) {
this.сallBack();
},
saveStartDate: function () {
console.log('saveStartDate');
},
}); //end $.fn.extend
|
this[сallBack]()не? |
Передавать надо не имя функции, а саму функцию, и контекст, в котором нужно вызвать эту функцию.
|
Kolyaj,
А почему бы и нет, получается своеобразный switch. |
Где тут switch?
|
Цитата:
Цитата:
|
А в чём именно проблема?
Пример:
function e(func){
func();
}
e(function(){alert(1)});
|
:-?
Сейчас работает. Хм. Где-то ошибся, потому как не работало до этого. Спасибо. |
Kolyaj,
Разьве совсем не похоже?
var pswitch = function(){
this.e = function(){
var args = Array.prototype.slice.call(arguments);
this[args.shift()].apply(this, args);
return this;
}
this.func1 = function(){alert(1)};
this.func2 = function(){alert(2)};
this.func3 = function(t){alert(t);};
};
var i = new pswitch();
i.e('func1').e('func2').e('func3', 3);
|
Нет, не похоже. Замена switch объектом -- известный паттерн. Непонятно, зачем он здесь нужен.
|
Всё ясно. На вкус и цвет...
Моё мнение, что они всё таки похожи, но спорить не буду. |
Главный вопрос не в том, похожи или не похожи, а зачем это нужно в данном случае.
|
Kolyaj,
Я про необходимость ничего и не писал, тем более это всё равно решать не нам. Лишь ответил на вопрос: Цитата:
|
| Часовой пояс GMT +3, время: 13:24. |