Доступ к аргументам Функции со стороны её Методов
Метод .on() функции Main() не может получить доступ к item, переданному в неё. Знаю, что в jQuery есть функция $, в которую передается аргумент, с которым затем работают методы. Открыв исходник jQuery и увидев код, мне захотелось закрыть его, что я и сделал. Вот решил обратиться к Вам на форум!
<!doctype html> <div> <div id='square'></div> </div> <style> #square { width: 100px; height: 100px; background-color: #ea8181; } </style> <script> function Main(item) { if (typeof item == 'string') { alert('Item is not element'); return; } this.elem = item; } Main.prototype.on = function(event, handler) { this.elem.addEventListener(event, handler); } function show(e) { alert(e.target); } Main(square).on('click',show); </script> Покажите, пожалуйста, как правильно делаются подобные вещи? Спасибо! |
Teamur,
new Main(square).on('click',show); или function Main(item) { if (!(this instanceof Main)){ return new Main(item); } if (typeof item == 'string') { alert('Item is not element'); return; } this.elem = item; } |
destus,
А в jQuery тоже это делается через new? Хотелось бы без new ). Одна главная функция и куча методов к ней! Как еще можно реализовать! Предложите, пожалуйста, еще варианты! Вопрос совместимости со старыми браузерами не стоит, поэтому если это как-то можно укоротить, используя es6, 7, 8 и тд, я только ЗА! И еще подвопрос: А можно нпр, чтобы главная функцию вернула объект с методами? |
Цитата:
Цитата:
|
Цитата:
|
Teamur, и jQuery на es5 написано.
|
destus,
Rise, Спасибо, товарищи! Я как обычно пооткрывал 50 вкладок и утонул в каше! Если ещё как-то можно улучшить) код, буду рад ответам! |
А можно как-то обойтись без постоянной записи this.elem this.elem this.elem?
|
Teamur, зачем?
|
Компактизация, минификация...
|
Часовой пояс GMT +3, время: 04:35. |