Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Ребята помогите правильно реализовать цепочки функций как в jquery (https://javascript.ru/forum/misc/28831-rebyata-pomogite-pravilno-realizovat-cepochki-funkcijj-kak-v-jquery.html)

mrgordon 04.06.2012 14:32

Ребята помогите правильно реализовать цепочки функций как в jquery
 
Всем привет
Помогите пожалуйста реализовать цепочки функций как в jquery
$().$().$().$().$().............

грамотно
как лучше делать через прототипы или без них?
напишите пожалуйста примерчики цепочек какие у вас есть

:help:

melky 04.06.2012 15:17

Вариант без повтора "return this"
function $(a) { this[a] = a; }

// методы хранятся тут
var props = {
    "foo": function(){ alert("foo"); },
    // что-то возвращает
    "bar": function(){ alert("bar"); return ":)"; },
    "etc": function(a){ alert("etc"); return this[a]; }
};

// магическая оборачивалка
var i, wrap = function(prop) {
    return function(){
        var res = props[prop].apply(this, arguments);
        return res === undefined ? this:res;
    };
};

// обрабатываем свойства магической оборачивалкой
for(i in props) if(props.hasOwnProperty(i)) {
    $.prototype[i] = wrap(i);
}

// и используем.
alert( new $().foo().bar() );
alert( new $("HEYA!").etc("HEYA!") );

Octane 04.06.2012 15:28

http://javascript.ru/forum/misc/7106...arabotalo.html

melky 04.06.2012 17:26

Octane, Вы удалили 2 поста выше? okay :(

Цитата:

Сообщение от Maxmaxmахimus
я если честно не понял, можешь обяснить зачем так надо?

чтобы каждый раз не писать "ретурн зиз". Вообще, разница будет чувствоваться только в масштабах квери - там много таких методов, и в каждом будет return this ?

но есть минус - придётся как-то распознавать процедуру от функции. я подумал, что это монжно сделать, не возвращая из процедуры ничего. (т.е. undefined). но тут может возникнуть проблема с функциями, которые намеренно возвращают undefined.

так что я не знаю, можно ли мой код считать классным (: пусть посуществует на правах "ещё одного способа"

Раед 04.06.2012 20:04

Цитата:

Сообщение от Maxmaxmахimus
почему не сделать сжатие по словарю?

Чё?

mrgordon 04.06.2012 20:35

многострочный текст нельзя писать

mrgordon 04.06.2012 20:40

в кавычках в яваскрипте


Часовой пояс GMT +3, время: 12:25.