Селектор элементов для библиотеки
Здравствуйте.
Пишу небольшую библиотеку, включающую собственные функции. Сделал её по примеру 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();:) можно так попробовать |
jQuery style JavaScript library (chaining, prototyping, addoning)
Небольшая JavaScript библиотека в jQuery стиле включающая собственные функции
Перенесено сюда. NO_ONE, дерзай... |
Часовой пояс GMT +3, время: 05:52. |