Я сомневаюсь в функции "вызова" в Javascript.У меня есть этот плагин jQuery:
(function($) {
var methods = {
method1 : function( settings, callback ) {
// do stuff
if($.isFunction(callback)){
callback.call(this, $(list));
}
},
method2 : function( settings, callback ) {
// do stuff
if($.isFunction(callback)){
callback.call(this, $(list));
}
},
method3 : function( settings, callback ) {
// do stuff
if($.isFunction(callback)){
callback.call(this, $(list));
}
},
};
$.fn.jPlugin = function( method ) {
if ( methods[method] ) {
return methods[method].apply( this, Array.prototype.slice.call(arguments, 1));
}
else if ( typeof method === 'object') {
$.error( 'Expected two (2) parameters: parameter 1 must be the method name to call. Parameter 2 must be an object containing the settings for this method.' );
}
else {
$.error( 'Method ' + method + ' does not exist' );
}
};
И я немного озадачен этой строкой в документации к плагину jQuery:
return methods[method].apply( this, Array.prototype.slice.call(arguments, 1));
Плагин работает, как и ожидалось, без обратного вызова,Но как мне сделать, чтобы передать обратный вызов правильному методу, если я вызываю плагин следующим образом?
$('#my-div').jPlugin('method1', settings);
Должна ли функция обратного вызова быть частью объекта настроек или я могу адаптировать плагин для принятия этого?
$('#my-div').jPlugin('method1', settings, callback);
Спасибо, ребята!