TGViewer
Frontend | Вопросы собесов Frontend | Вопросы собесов @easy_javascript_ru · 17.6K subscribers
Post #676 6.12K
🤔 От чего зависит this ?

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

🚩Основные правила

Глобальный контекст или контекст функции:
В глобальном контексте (вне любой функции) или внутри обычной функции (не метода объекта) this ссылается на глобальный объект, который является window в браузере или global в Node.js.
      console.log(this); // window в браузере или global в Node.js

function globalFunction() {
console.log(this); // window в браузере или global в Node.js
}

globalFunction();


Методы объекта:
Когда функция вызывается как метод объекта, this ссылается на объект, который использовался для вызова метода.
      const obj = {
name: 'Alice',
greet: function() {
console.log(this.name);
}
};

obj.greet(); // 'Alice'


Конструкторы и классы:
this ссылается на вновь созданный объект.
      function Person(name) {
this.name = name;
}

const person = new Person('Bob');
console.log(person.name); // 'Bob'

class Animal {
constructor(name) {
this.name = name;
}
}

const animal = new Animal('Charlie');
console.log(animal.name); // 'Charlie'


Явное задание this с помощью call, apply и bind:
Методы call и apply позволяют вызывать функцию с явно заданным значением this. Метод bind создает новую функцию, которая при вызове имеет определенное значение this.
function sayHello() {
console.log(this.name);
}

const person = { name: 'David' };

sayHello.call(person); // 'David'
sayHello.apply(person); // 'David'

const boundSayHello = sayHello.bind(person);
boundSayHello(); // 'David'


🚩Значение this зависит от контекста вызова:

🟠В глобальном контексте и обычных функциях this ссылается на глобальный объект (window или global).
🟠В методах объекта this ссылается на сам объект.
🟠В конструкторах и классах this ссылается на вновь созданный объект.
🟠С помощью call, apply и bind можно явно задать значение this.
🟠Стрелочные функции захватывают this из окружающего лексического контекста.
🟠Вложенные функции могут иметь различное значение this, что можно решить с помощью стрелочных функций или сохранения контекста внешней функции.

Ставь 👍 и забирай 📚 Базу знаний
  • 👍 25
  • ❤ 4
More from @easy_javascript_ru
  1. Oct 15, 2026Post #3044
  2. Oct 15, 2026🤔 Какие преимущества у di? Dependency Injection (DI) – это паттерн проектирования, которы…
  3. Oct 14, 2026🤔 Зачем создавались библиотеки react и другие? Библиотеки, такие как React, создавались д…
  4. Oct 13, 2026🤔 Что такое репозиторий? Это хранилище кода, файлов и их истории изменений. Используется…
  5. Oct 13, 2026🤔 Как мы можем замерить скорость работы участка кода с date.Now? В JavaScript можно замер…
  6. Oct 12, 2026🤔 Зачем нужен docker? Это инструмент для создания, развертывания и управления контейнерам…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →