Каков наилучший способ создания независимой от библиотеки оболочки для селекторов библиотеки JS? У меня есть пользовательский JS-фреймворк, который стремится быть максимально независимым от библиотек. Проблема, с которой я столкнулся, заключается в том, что, например, Mootools расширяет возвращаемый элемент DOM с помощью своих собственных специфических методов (инъекция, принятие и т. Д.), И я не хочу, чтобы они были видны модулям, расположенным поверх структуры (как Николас Закас однажды описал), чтобы предотвратить злоупотребления / несчастные случаи.
В качестве простой первой помощи я создал пользовательский селектор, использующий Mootools, затем он создает собственный элемент -object / wrapper и руками выбирает (и улучшает) элемент Doo Mootools, поэтому расширенные методы Mootools не видны непосредственно модули выше. Проблема этого подхода заключается в том, что я теряю всю встроенную функциональность элемента DOM (значение, стиль и т. Д.), Если он не был специально закодирован в оболочку (элемент).
Есть ли другой и / или лучший способ сделать это? Что-то, что расширило бы собственный элемент DOM, таким образом предоставляя собственные свойства / методы автоматически И предлагая расширенные функциональные возможности через оболочку (через Mootools, jQuery, что угодно ...).
Пример кода, как это делается в данный момент:
/*
* Wrap the native library element
*/
Element = function(_libElement) {
// Store native object
var libElement = _libElement;
return {
addClass: function(_class) { libElement.addClass(_class); return this; },
removeClass: function(_class) { libElement.removeClass(_class); return this; },
hasClass: function(_class) { return libElement.hasClass(_class); }
};
};
/*
* Custom selector
*/
getElement = function(_query) {
var elements = $$(_query);
// Wrap each element to Element wrapper
var num = elements.length;
while(num--) {
elements[num] = new Element(elements[num]);
}
return elements;
};