Ваш код имеет некоторые проблемы:
Во-первых, при запуске вы получите три глобальные переменные: max
, _min
и options
.
JavaScript имеет функциональную область, но вы должны использовать оператор var
для объявления переменных, если вы его не используете, а идентификатор, который вы присваиваете, не найден в цепочке областей видимости, они станут свойствами объекта Глобал (window
).
Во-вторых, я думаю, что вы хотите вызвать функцию, переданную в качестве аргумента String, если это так, вам я бы порекомендовал вам использовать объект для группировки ваших функций и иметь возможность получить их, если вы просто определите свои функции в качестве переменных они не привязаны к доступному объекту ( технически переменные, аргументы и идентификаторы объявления функции привязаны к недоступному объекту переменной ), например:
(function ($) {
$.fn.myFoo= function (o){
var privateFunction = function (){
alert('private');
};
var functions = {
_min: function (){
alert('_min');
},
max: function (){
alert('max');
}
};
functions[o](); // invoke the function
// ...
return this; // preserve the jQuery method "chainability"
};
})(jQuery);
Редактировать: Если вы хотите объявить «частную функцию» (не вызываемую через аргумент String), вы можете просто объявить ее как переменную в функции $.fn.myFoo
.
Он будет использоваться всеми вашими "публичными функциями" (всеми членами объекта functions
), но вы не сможете выполнить его, используя аргумент o
.