Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Шаблон для своей jQuery (https://javascript.ru/forum/project/70664-shablon-dlya-svoejj-jquery.html)

void() 23.09.2017 14:31

Шаблон для своей jQuery
 
Шаблон для своей jQuery:

function $(s){ return new Q(document.querySelectorAll(s)); }

function Q(x){
    this.x = x;
    this.toggle = function(v, c){
        for(var i = 0; i < this.x.length; i++){
            this.x[i].addEventListener(v, function(){
                this.classList.toggle(c);
            });
        }
        return this;
    }
}


Используется так:

$('.class').toggle('click', 'class-active');


Остается только добавить методов. Например:

this.on = function(v, f){
        for(var i = 0; i < this.x.length; i++){
            this.x[i].addEventListener(v, f);
        }
        return this;
    }


Теперь можно использовать так:

$('.class').toggle('click', 'class-active').on('click', function(){alert('1');});


:)

рони 23.09.2017 14:34

void(),
https://javascript.ru/forum/project/...tml#post438821

void() 23.09.2017 14:43

рони,
Ничеси, надо разобраться)

Rise 23.09.2017 20:19

void(),
у тебя получается бессмысленный перерасход памяти, т.е. каждый новосозданный объект хранит одинаковые копии методов.

void() 23.09.2017 22:44

Rise,
Спасибо за подсказку. Попробую переделать через прототипы и еще поизучаю вашу библиотеку на предмет каких-то идей. Еще я думаю, тут есть проблема с циклами, которые будут все время копироваться, почти в каждом методе, что не очень круто. И, наверно, не лучшая кроссбраузерность. Хотя последний фактор меня пока трогает мало.

Rasy 24.09.2017 00:00

Rise,
а какой паттерн в твоей либе?

Rise 24.09.2017 00:13

Rasy,
паттерн чего?

Rasy 24.09.2017 00:19

Цитата:

Сообщение от Rise
паттерн чего?

кода. В своей либе использую паттерн "Модуль".

Rise 24.09.2017 06:17

Rasy,
да разные паттерны там есть и могут быть, по аналогии с jquery, подробнее здесь, а паттерны кода это может быть всё что угодно, например такую запись в либе "context || document" можно назвать паттерном параметров функции по умолчанию.

Rasy 24.09.2017 08:32

Rise,
Design Pattern


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