Селектор элементов для библиотеки
Здравствуйте.
Пишу небольшую библиотеку, включающую собственные функции. Сделал её по примеру lodash. Возникла потребность написать простенький селектор для элементов по типу "доллара" в jQuery. Сейчас остановился на такой конструкции:
(function() {
"use strict";
function myLib(id) { // берет элемент как _("id")
return document.getElementById(id);
};
function funcOne() {}
function funcTwo() {}
myLib.funcOne = funcOne;
myLib.funcTwo = funcTwo;
window._ = myLib;
}());
А как реализовать для публичного использования методы для этого селектора? Например, _("id").hide() или _("id").text(). Пробовал так:
(function() {
"use strict";
function myLib(id) { // берет элемент как _("id")
return document.getElementById(id);
};
myLib.prototype.hide = function { // но как это преобразовать в _("id").hide()?
}
function funcOne() {}
function funcTwo() {}
myLib.funcOne = funcOne;
myLib.funcTwo = funcTwo;
window._ = myLib;
}());
Посмотрел исходник lodash - слишком тяжело и много кода, не разобрался. Буду благодарен за объяснение и прошу прощения за столь тривиальные вопросы. |
|
Спасибо, прочитал. Сделал следующее:
function myLib(el) { // _("mydiv")
this.el = el;
return document.getElementById(el);
}
myLib.prototype = {
text: function() {
return this.textContent;
},
html: function() {
return this.innerHTML;
}
};
Но возникло два вопроса: 1. Из-за "use strict" (как я понял) this.el = el; не хочет работать. Как это исправить? 2. Я всё также не могу вызвать _("mydiv").text()... Буду благодарен, если чуть подробнее объясните. Нашел уже примеры такой реалиции: 1, 2. Но ни один так и не смог адаптировать под свой код. |
function MyLib() {
var self = this instanceof MyLib
? this
: Object.create(MyLib.prototype);
if (1 === arguments.length) {
self.me.apply(self, arguments);
}
if (2 === arguments.length) {
self.my.apply(self, arguments);
}
return self;
}
MyLib.prototype = {
me: function (a) {
console.log(a);
},
my: function (a, b) {
console.log(a, b);
},
test: function () {
console.log('test');
}
};
var a = MyLib('arg1');
var b = MyLib('arg1', 'arg2');
a.test();
:) можно так попробовать |
| Часовой пояс GMT +3, время: 23:55. |