Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.05.2014, 15:37
Интересующийся
Отправить личное сообщение для ShuggyBumblebee Посмотреть профиль Найти все сообщения от ShuggyBumblebee
 
Регистрация: 24.11.2013
Сообщений: 20

привязка Onklick к объекту
Добрый день.
есть обьект, в нем метод:
init: function(){
	this.Button();
	//this.btn.addEventListener('click', this.Button.bind(this), false);	
	this.btn.addEventListener('click', function(){return this.Button.call(this)}, false);		
}

В общем через this.btn.addEventListener('click', this.Button.bind(this), false); он работает, а вот через call() я не могу сообразить как сделать

пишет
Цитата:
Uncaught TypeError: Cannot read property 'call' of undefined

Последний раз редактировалось ShuggyBumblebee, 07.05.2014 в 15:47.
Ответить с цитированием
  #2 (permalink)  
Старый 07.05.2014, 15:57
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

this в обработчике ссылается на элемент, на который повесили событие, т.е. на this.btn. Чем не устраивает вариант с .bind? А то, что ты пытаешься сделать с .call - совершенно другое. И
this.Button.call(this)

тоже самое (совершенно один в один), что и
this.Button()
Ответить с цитированием
  #3 (permalink)  
Старый 07.05.2014, 15:59
Интересующийся
Отправить личное сообщение для ShuggyBumblebee Посмотреть профиль Найти все сообщения от ShuggyBumblebee
 
Регистрация: 24.11.2013
Сообщений: 20

В Опере Мини bind не работает
Ответить с цитированием
  #4 (permalink)  
Старый 07.05.2014, 16:01
Интересующийся
Отправить личное сообщение для ShuggyBumblebee Посмотреть профиль Найти все сообщения от ShuggyBumblebee
 
Регистрация: 24.11.2013
Сообщений: 20

все есть
init: function(){
	var fn = this;
	this.Button();
//	this.btn.addEventListener('click', this.Button.bind(this), false);	
	this.btn.addEventListener('click', function(){return fn.Button.call(fn);
}, false);		
		}


даже можно и так fn.Button(), вместо call

Последний раз редактировалось ShuggyBumblebee, 07.05.2014 в 16:31.
Ответить с цитированием
  #5 (permalink)  
Старый 07.05.2014, 16:54
Аспирант
Отправить личное сообщение для M-ka Посмотреть профиль Найти все сообщения от M-ka
 
Регистрация: 25.04.2014
Сообщений: 47

ShuggyBumblebee,
более общепринято использовать that для передачи this, а fn использовать для колбеков или литералов...
Ответить с цитированием
  #6 (permalink)  
Старый 07.05.2014, 17:31
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Сообщение от ShuggyBumblebee
даже можно и так fn.Button(), вместо call
Не можно, а нужно! Потому что запись вида
object.method.call(object)

избыточна. this и так будет ссылаться на object.
Ответить с цитированием
  #7 (permalink)  
Старый 07.05.2014, 17:33
Интересующийся
Отправить личное сообщение для ShuggyBumblebee Посмотреть профиль Найти все сообщения от ShuggyBumblebee
 
Регистрация: 24.11.2013
Сообщений: 20

Сообщение от Sweet Посмотреть сообщение
Не можно, а нужно! Потому что запись вида
object.method.call(object)

избыточна. this и так будет ссылаться на object.
Да. Я так и сделал
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обратиться к объекту изнутри во время объявления элементов shaltay Общие вопросы Javascript 8 16.01.2014 10:47
присвоение функции $ объекту windows amt35 Общие вопросы Javascript 3 08.10.2013 17:26
Доступ к объекту массива Fronnt Общие вопросы Javascript 6 07.10.2013 23:04
Как реализовать обращение к объекту, конкретнее см внутри kichSman jQuery 4 15.08.2012 18:06
Привязка данных к объекту Vit Общие вопросы Javascript 7 19.06.2012 12:42