Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Обработчик кнопок в прототипе (https://javascript.ru/forum/misc/67883-obrabotchik-knopok-v-prototipe.html)

Rocombo 13.03.2017 11:28

Обработчик кнопок в прототипе
 
Подскажите, что делать, и почему это не так.
Не понимаю, почему нельзя делать функцию внутри другой функции.
Constructor.prototype.addEvents = function () {
  var button = this.get('button');

  button.add EventListener('click', changeColor, false);

  function changeColor () {
    button.style.background = 'green';
  }
}


а если я changeColor вынесу за пределы - то уже у меня нет доступа к button, одни проблемы. и this туда никак не засовывается, ни с баиндом, ни с чем

destus 13.03.2017 11:42

Цитата:

Не понимаю, почему нельзя делать функцию внутри другой функции.
Не понимаешь, потому что это делать можно.

ksa 13.03.2017 11:50

Цитата:

Сообщение от Rocombo
почему нельзя делать функцию внутри другой функции

Это заблуждение... :)

Модернизированный пример из учебника
https://learn.javascript.ru/new-prototype
function Rabbit(name) {
	this.name = name;
}
Rabbit.prototype.test = function() {
	var str=this.name;
	alert(ext());
	function ext(){
		return str+' - Ok';
	}
}
var rabbit = new Rabbit("Rabbit");
rabbit.test();

функция создана и она работает...

Rocombo 13.03.2017 12:39

Спасибо!


Часовой пояс GMT +3, время: 18:58.