@Dubrovin

Как правильно оформить helper функции?

Здравствуйте,
хочется создать свои helper функции, что-то вроде:
/* helpers.js */
function find( el, selector ) {
    return el.querySelector( selector );
}

function on( el, event, callback ) {
    el.addEventListener( event, callback );
}

в целях сокращения кода.

Сами функции будут описаны в файле helpers.js, который сборщиком RollupJS попадёт в начало финального JS файла (используются ES6 import / export, но в финальный файл import / export не попадает).
Не понятно, как лучше организовать хранение этих функций. Если оставить как есть, то они попадут в window (могут быть конфликты), если положить в глобальную переменную, например, abc вот так:

/* helpers.js */
abc.find = function( el, selector ) {
    return el.querySelector( selector );
}

abc.on = function( el, event, callback ) {
    el.addEventListener( event, callback );
}


то при вызове придётся каждый раз писать abc, например, abc.find( el, selector) ...
Ну и наткнулся на статью: https://frontender.info/designing-javascript-apis-...
Хочется использовать цепочки методов, чтобы писать не abc.find( el, selector ), а el.find( selector ), как это делается в jQuery.

Может кто-нибудь привести пример кода как можно всё это оформить? Нужен эдакий мини-jQuery под свои нужды.
  • Вопрос задан
  • 791 просмотр
Пригласить эксперта
Ответы на вопрос 1
Minifets
@Minifets
Hello world!!!
el.find( selector ), как это делается в jQuery.


Вы немного не правы. Т.к. с jQuery вы не работаете с элементом напрямую, а оборачиваете есть оберткой из jQuery.
Если вам нужно расширить функциональность нативных вещей, то это можно сделать так:

String.prototype.customFunction = function () {
    console.log('кастомная функция');
};

let a = 'test';
a.customFunction();
"test".customFunction();
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
01 мая 2024, в 11:20
5000 руб./за проект
01 мая 2024, в 10:55
3000 руб./за проект
01 мая 2024, в 10:55
3000 руб./за проект