Вопрос носит скорее теоретический характер.
Имеем простейшую задачу вызвать метод класса по щелчку на кнопку.
Собственно сам работающий код:
<body>
<input type="button" value="OK">
</body>
function NewClass() {
this.show= function() {
alert("Some message");
}
}
button=document.querySelector('input[type=button]');
newClass= new NewClass;
button.onclick= function() {
newClass.show()
}
Меня интересует установка слушателя (11-13 строки кода).Правильно ли я понимаю, что
button.onclick=newClass.show()
не вариант т.к. контекст в данном случае будет = window и обертка в функцию в данном случае нужна для того, чтобы функция взяла "на себя" контекст window, а в самом вызове метода класса this соответствовал экземпляру созданного класса?
Также у меня возникает второй вопрос: можно ли обойти эту обертку функцией вызываемого метода при подвешивании слушателя, при помощи CALL? Т.е. передать контекст принудительно типа так:
button.onclick=newClass.show().call(newClass)
Но так к сожалению не получается: alert выскакивает при загрузке страницы, а сам button.onclick=null, если смотреть из браузера. Вопрос: почему данном случае слушатель отваливается? Ведь контекст я передаю и this=object (проверял alert-ом в this.show).
Есть ли альтернативное решение с "call"?