Доступ к аргументам Функции со стороны её Методов
Метод .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 и тд, я только ЗА! И еще подвопрос: А можно нпр, чтобы главная функцию вернула объект с методами? |
Цитата:
|
destus,
Rise, Спасибо, товарищи! Я как обычно пооткрывал 50 вкладок и утонул в каше! Если ещё как-то можно улучшить) код, буду рад ответам! |
А можно как-то обойтись без постоянной записи this.elem this.elem this.elem?
|
Компактизация, минификация...
|
Rise,
Всё понятно, благодарю! |
| Часовой пояс GMT +3, время: 17:07. |