Я, вероятно, что-то не так, но я нашел какое-то интересное поведение при попытке применить некоторое объектно-ориентированное программирование к Javascript. Рассмотрим следующийJavascript «this» overridden event listener
function Bug(element) {
this.focusedCell = null;
element.addEventListener('click', this.onClick, true);
};
Bug.prototype.onClick = function(event){
console.log("this is: ");
console.log(this);
};
Когда я вызываю метод из консоли, я вижу правильный экземпляр «это», но когда я нажимаю на элемент в документе я вижу элемент документа вместо экземпляра. Поэтому ... скорее всего, это не очень хорошая идея использовать прослушиватели событий с помощью методов экземпляра, по крайней мере, так, как я это делаю.
Так что вопрос:
Можно ли иметь слушателя событий, как это, что вызывает метод экземпляра объектов JavaScript, сохраняя при этом экземпляр в вызове?
Есть ли лучший образец для этого?
Редактировать: Я не пробовал это ни в чем, кроме Chrome. Но я бы предположил, что поведение такое же.
Функция создает новую область видимости. – adeneo
Спасибо, извините, не знал, что это был дублированный поиск, который ничего не обнаружил. – lukecampbell
@FelixKling Wow sweet вы нашли идеальный дубли ... – andlrc