Расскажите про this и контекст?

Этот вопрос проверяет знание механизма this в JavaScript и понимание того, как контекст выполнения влияет на значение this в функциях.

Короткий ответ

В JavaScript this — это ссылка на текущий контекст выполнения, который зависит от того, как вызвана функция. В методах объектов this ссылается на сам объект, а в обычных функциях — на глобальный объект или undefined в строгом режиме. Значение this может быть явно изменено с помощью методов call, apply и bind.

Длинный ответ

В JavaScript this — это ключевое слово, которое ссылается на текущий контекст. Контекст — это объект, который активен во время выполнения функции. Значение this зависит от того, как именно функция была вызвана:

 

Обычные функции: Когда функция вызывается напрямую (не как метод объекта), this будет указывать на глобальный объект в нестрогом режиме (window в браузере) или undefined в строгом режиме.

function show() {
	console.log(this); // В строгом режиме будет undefined, в нестрогом — глобальный объект 
}

Методы объектов: В методах объекта this ссылается на сам объект:

const user = {
	name: 'John',    
	greet() {    
		console.log(this.name); // 'John'    
	} 
}; 
user.greet();

Стрелочные функции: В стрелочных функциях this не имеет своего контекста и наследует его от внешней функции, в которой она была объявлена:

const obj = {
	name: 'John',    
	greet: () => {
			console.log(this.name); 
			// 'undefined' — стрелочные функции берут `this` из внешнего контекста    
	} 
}; 
obj.greet();

Контекст можно изменить с помощью методов call, apply и bind, которые позволяют задавать значение this явно.

 

Знание this и контекста важно для понимания того, как работают методы и как можно контролировать выполнение функций в разных контекстах.

Уровень

  • Рейтинг:

    4

  • Сложность:

    7

Навыки

  • JavaScript

    JavaScript

Ключевые слова

Подпишись на React Developer в телеграм