Множественные функции в JavaScript
Недавно я обнаружил новую штуку в 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).