Показать сообщение отдельно
  #1 (permalink)  
Старый 07.01.2018, 20:55
Новичок на форуме
Отправить личное сообщение для Alex7851 Посмотреть профиль Найти все сообщения от Alex7851
 
Регистрация: 07.01.2018
Сообщений: 2

Как изменить контекст при помощи call?
Вопрос носит скорее теоретический характер.
Имеем простейшую задачу вызвать метод класса по щелчку на кнопку.
Собственно сам работающий код:
<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"?
Ответить с цитированием