Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.10.2016, 15:42
Интересующийся
Отправить личное сообщение для NO_ONE Посмотреть профиль Найти все сообщения от NO_ONE
 
Регистрация: 01.03.2014
Сообщений: 19

Селектор элементов для библиотеки
Здравствуйте.

Пишу небольшую библиотеку, включающую собственные функции. Сделал её по примеру 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 - слишком тяжело и много кода, не разобрался.
Буду благодарен за объяснение и прошу прощения за столь тривиальные вопросы.
Ответить с цитированием
  #2 (permalink)  
Старый 19.10.2016, 16:44
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

NO_ONE,
http://forwebdev.ru/javascript/chaining/
Ответить с цитированием
  #3 (permalink)  
Старый 20.10.2016, 15:02
Интересующийся
Отправить личное сообщение для NO_ONE Посмотреть профиль Найти все сообщения от NO_ONE
 
Регистрация: 01.03.2014
Сообщений: 19

Спасибо, прочитал. Сделал следующее:
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. Но ни один так и не смог адаптировать под свой код.

Последний раз редактировалось NO_ONE, 20.10.2016 в 15:06.
Ответить с цитированием
  #4 (permalink)  
Старый 20.10.2016, 17:30
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

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();
можно так попробовать

Последний раз редактировалось Vlasenko Fedor, 20.10.2016 в 17:43.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите селектор для моего случая WalterScott jQuery 2 12.06.2015 22:39
Помощь в выборе фреймворка, библиотеки для задачи. any.zicky Библиотеки/Тулкиты/Фреймворки 5 26.11.2012 15:13
Клавиши стрелки для выбора элементов в div Rooner Элементы интерфейса 4 26.10.2012 06:34
Ищу библиотеки для работы с 3D Бобр Общие вопросы Javascript 3 06.08.2010 17:02
Некорректно работает функция для создания элементов exec Общие вопросы Javascript 4 13.07.2010 11:15