this — позволяет обратиться к объекту, который вызывает JavaScript-функцию/метод. Если к нему обратиться вне функции, то он укажет на глобальный объект. При работе в браузере — это объект window. При вызове функции без явного указания объекта или с объектом window, this тоже будет указывать на window. Посмотреть пример из заметки Как узнать контекст выполнения в JavaScript (this) by Aleksei (@htmllabru) на CodePen.
This в JavaScript
var o = {name: "John",say: function(){
//console.log(this.name);
var self = this;
function some(){
console.log(self.name);
}
some();
}};
o.say();
При назначении обработчиков событий через атрибуты HTML-элементов onclick
и другие «on», this
в функциях вызова указывает на глобальный объект. Но если обработчик события программно присваивать свойству onclick
, то оператор будет ссылаться на сам объект вызова — HTML-элемент. При использовании метода навешивания обработчиков — elem.addEventListener(), ссылка будет также вести на сам HTML-элемент.
Если учитывать старые версии IE, то понадобиться писать кроссбраузерные «костыли»:
if (el.addEventListener) {
el.addEventListener('click', handler, false);
} else if (el.attachEvent) {
el.attachEvent('onclick', handler);
}
Полезная ссылка Значение this в обработчике.