Множественные функции в JavaScript

30 марта 2011 г.

Недавно я обнаружил новую штуку в javascript. Поискал в Инете, ничего по этому поводу не нашёл. Поэтому назову это — множественные функции.

Что это вообще такое?

Давайте взглянем на код:

myfunction()()('mystr')();

Интересно? Как это делается? Возможно, вы уже догадались…

Кодим

Всё очень просто: из своей функции мы можем вернуть другую функцию, и тогда двойной вызов — ()() — её исполнит тоже. Разобрались, теперь код:

function myfunction(){
return function(){
// тут наш код, например:
alert('Множественные функции работают!');
}
}

Какая от этого польза?

jQuery

Здесь более простое управление элементом. К сожалению, такая штука в jQuery вряд ли появится, там не та структура.

$(myelement).attr('src', null)('title', null); // более простая обработка.[/code
<h5>Обфускация</h5>
А вот для обфускации — в самый раз! Смотрим:

a4dhu8()(document)('7')(['fjk', 0, {a:[]}])()()()[67]();

Такую замучаешься распутывать, а деобфускаторы пока таких вещей не знают.

Заключение

Вот так вот… Надеюсь, вам было интересно. JavaScript позволяет творить очень много интересных вещей, и много ещё таких вот секретов и трюков не раскрыто. А кто-то ещё говорит, что JavaScript — не ООП язык (см. javascript 2.0).

  • Похожие статьи
  • Предыдущие из рубрики