Ключевое слово this в JavaScript ссылается на контекст исполнения — его значение зависит от того, как и где вызывается функция.
Когда функция вызывается как метод объекта, this ссылается на объект-владелец.
const obj = { name: "Alice", greet() { console.log(this.name); } };
obj.greet(); // "Alice"
В нестрогом режиме, this по умолчанию ссылается на глобальный объект (window в браузерах).
function show() { console.log(this); } // window
В строгом режиме, this равен undefined внутри отдельных функций, что предотвращает случайное загрязнение глобальной области видимости.
"use strict";
function show() { console.log(this); } // undefined
В обработчиках событий DOM, this ссылается на элемент, получивший событие.
button.addEventListener("click", function() {
console.log(this); // the button element
});
Стрелочные функции не имеют собственного this. Вместо этого они наследуют this из охватывающей лексической области видимости на момент определения.
const obj = {
name: "Alice",
greet: () => { console.log(this.name); } // 'this' из внешней области, не из obj
};
this является динамическим в обычных функциях — определяется в момент вызоваthis является статическим в стрелочных функциях — определяется в момент определенияthisthis критично для написания предсказуемого и поддерживаемого JavaScript кодаВ strict mode отдельная функция будет иметь this, привязанный к глобальному объекту, так же как в non-strict mode, что гарантирует одинаковое поведение в разных контекстах кода.
Новый — ещё не проверен сообществом
Вы