Добрый день!Как передать локальную переменную из функции в функцию прослушивания событий в JavaScript?
Я начал писать свою собственную базовую библиотеку JavaScript для личного использования и распространения несколько дней назад, но у меня возникли проблемы с одним из методов, в частности bind().
Внутри самого метода этот относится к библиотеке объекта.
Я отправился в Google и нашел function.call(), но это не получилось так, как я его планировал - он просто выполнил функцию.
Если вы посмотрите на другой метод, каждый(), вы увидите, что он использует вызова() передавать значение.
Я также попытался следующие:
f.arguments[0]=this;
Моя консоль выдает ошибку, заявив, что не может читать «0» из «не определено».
Я хотел был бы проголосовать (ссылаясь на библиотеку - НЕ ОКНО), чтобы использовать ее в прослушивателе событий.
Вы можете увидеть его, начиная с строки 195 JavaScript this JSFiddle.
Здесь так же:
bind:function(e,f){
if(e.indexOf("on")==0){
e=e.replace("on","");
}
if(typeof f==='function'){
/*Right now, 'this' refers to the library
How can I pass the library to the upcoming eventListener?
*/
//f=f(this); doesn't work
//f.call(this); //doesn't work
//this.target refers to the HTMLElement Object itself, which we are adding the eventListener to
//the outcome I'm looking for is something like this:
/*$('h3').which(0).bind(function({
this.css("color:red");
});*/
//(which() defines which H3 element we're dealing with
//bind is to add an event listener
this.target.addEventListener(e,f,false)
}
return this;
},
Большое вам спасибо за вашу помощь, авторы!
Не могли бы вы поставить соответствующий код на этом посту здесь? Скрипка хороша для демонстрации, но мы не собираемся туда ехать и сканировать лоток 200+ loc только для понимания проблемы – Bergi
Отредактировано.(Хорошая идея, lol) –
Вы видели [JavaScript '.bind()'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind) метод, который «[c] создает новую функцию, которая при вызове имеет свое ключевое слово« this', установленное на предоставленное значение »? Альтернативно, ваша библиотека '.bind()' могла передать свою собственную прокси-функцию в 'addEventListener()', а затем эта функция могла бы вызвать 'f', используя' .call() 'или' .apply() '. – nnnnnn