Цитата:
Могу сказать только одно -ооп совали где нужно и не нужно-типа это круто . всему своё место. некоторые задачи лучше решать функционально, некоторые ооп. ооп -построение интерфейсов,функционально там ну не в тему. но тоже, если не использовать наследование там -это ...как мин бред. |
да я бы тоже не стал заморачиваться с ооп, пока не прижмет. Но работодатели требуют его знание(.
да и функциональное программирование не особо то популярно. У Флэнагана все описание ФП уместилось на 3-х листочках. В "шаблонах" есть много интересного на эту тему (каррирование, мемоизация..), но все дано не как полноценная модель программирования а как дополнительные возможности использования языка( |
Цитата:
|
Цитата:
Цитата:
кстати, jQuery - это на 50% функциональщина:) |
Интересно как бы выглядел jquery полностью в функциональном стиле ?
ща нафантазирую :) //выберем все теги P var v=$("p"), //создадим функцию с устанавливающую css test=$css("opacity:0.5;left:100"); // всем P добавим пример мир $html( v ,"привет мир" ); //удалим все p.killme $remove( v(".killme") ); //скормим выборку функции "test" созданной заранее test(v); ну или как то так :D Прикольно правда ? :D :D :D |
Цитата:
Есть у меня подобная штука: var tuple = new Tuple; tuple.set('a', 0)(1, 2)('function', function(param) { alert(param); }); tuple.get('a'); // 0 tuple.get('function')(1); // 1 tuple.get(1); // 2 tuple.get(); // {a: 1, 'function': [ object Function ], 1: 2} |
Прототип функционально ориентиированного jquery :D
//конструктор обёрток для функций function wrapper(callback){ return function(param){ return function(){ return callback.apply(this,[Array.prototype.slice.call(arguments),param]) } } } //аналог $ в jquery function $(param){ var wrap=wrapper(function(arg,context){ if ( arg.length==0) return context; else if (typeof arg[0]=="function") { var w=wrap( context ); arg[0]( w ); return w; } else return wrap( context+arg[0] ); }) return wrap(param); } //скрываем элемент function $hide(o){ alert('скрыть '+ o() ); } //если указан только p1 и p1 не функция, то породит функцию // если p1 это функция а p2- строка style, тогда сработает сразу function $css(p1,p2){ var wrap=wrapper(function(arg,style){ alert("для элемента "+arg[0]()+" установить стили "+style); return wrap(style); }); if (p2) return wrap(p2)(p1); if (p1) return wrap(p1); } // эксперементы //выберем все дивы var sel1=$("div"); //из дивов выберем те у которых класс sel2 var sel2=sel1(".sel2"); $hide( sel1(".test1") ); //скроем div.test1 $hide( sel2(".test2") ); //скроем div.sel2.test1 //создадим функцию style из функции CSS var style1=$css(" opacity:0.5; left:200"); alert(" !!!!! применим несколько команд к выборке !!!!! "); sel2( style1 )( $css("left:1000px;") )($hide); alert(" !!!!! применим несколько выборок к команде !!!!! "); style1(sel2)( sel1 )( $(".hello") ) alert(" !!!!! скомбинируем оба подхода !!!!! "); sel1( style1( sel2(".t1") ) ( sel2(".t2") ) ); |
Цитата:
|
Часовой пояс GMT +3, время: 11:08. |