Самая простая вещь, о которой я могу подумать, это переупорядочить параметры так, чтобы наиболее часто используемые из них были на первом месте. Так что если вы измените функцию на:
jQuery.fn.attach = function(element, duration, callback, settings, options) {
тогда вы можете сделать все (кроме, вероятно, первого параметра) необязательным, поместив значения по умолчанию в тело функции. Такие как:
if(!duration)
duration = 3000;
Тогда
$(this).attach($('#e1-blue'), 3000, function() { alert('done'); });
и
$(this).attach($('#e1-blue'), 3000);
оба будут действительны, а другие значения будут автоматически заполнены null
.
Строго говоря, вы можете проверить типы параметров внутри функции, например, если вторым параметром является целое число, то это duration
, если это функция callback
, если это объект settings
, но я не думаю, что люди, которые будут следовать вашему коду позже, будут благодарны Это. Это также может затруднить дальнейшее расширение функции, если, например, требуется второй целочисленный параметр.