jQuery – искореняем null параметры

Рассматриваемый тут приём может использоваться при создании любых функций, имеющих необязательные параметры, но особенно он актуален при создании плагинов, поскольку плагин предназначен для широкого круга разработчиков, и им нужно предоставить удобный и понятный API.

В PHP у нас такой проблемы бы не возникло, так как там есть параметры по умолчанию. В Java – тоже, так как там можно перегружать методы с различными наборами параметров. Остаётся лишь вздохнуть: “Хорошую религию придумали индусы”. Хотя, если подумать: а нам оно надо – писать перегруженные методы на все случаи жизни, когда можно очень компактно и с минимальными потерями для читабельности кода уместить всё в одной функции! Что касается параметров по умолчанию, то они легко реализуются и в JavaScript. Примерно так:

И вызывать как-то так:

Понятно, что это не то, что вы назвали бы удобным API, поэтому — “мы пойдём другим путём”. Ну, а если вам нужны продающие тексты на сайт, то посетите e-art.com.ua, там работают хорошие ребята и они помогут вывести ваш сайт в ТОП. А теперь продолжим...

Итак, в чём состоит предлагаемый способ, и что, в данном случае, может предложить нам jQuery. В основе его старая как мир идея: упаковка параметров в объект. Каждый параметр представлен как свойство объекта; теперь у него есть имя, и порядок следования параметров нас больше не волнует. А для реализации необязательности параметров мы воспользуемся встроенной функцией jQuery extend, в которую первым параметром передадим объект, заполненный значениями по умолчанию, а вторым — переданный в функцию объект с фактическими значениями параметров. Функция extend сливает оба объекта в один, заменяя значения одноимённых свойств первого объекта, значениями второго, если они есть. Если объект не определён, то он заменяется пустым объектом, благодаря конструкции || {}.

Вот, собственно, и всё. На радостях, оформляем нашу функцию как плагин jQuery:

Программисту, использующему нашу функцию или плагин, больше не придётся считать параметры и передавать null-ы, когда он не хочет передавать ничего.


Оставить комментарий