Skip to content

Commit

Permalink
update(JS): web/javascript/reference/operators/this
Browse files Browse the repository at this point in the history
  • Loading branch information
undead404 authored and AdriandeCita committed Apr 12, 2024
1 parent 461d049 commit 143da6f
Showing 1 changed file with 5 additions and 3 deletions.
8 changes: 5 additions & 3 deletions files/uk/web/javascript/reference/operators/this/index.md
Expand Up @@ -7,9 +7,11 @@ browser-compat: javascript.operators.this

{{jsSidebar("Operators")}}

Ключове слово функцій **`this`** ("це") поводиться в JavaScript дещо інакше, коли порівняти з іншими мовами. Також воно має певні відмінності при роботі в [суворому](/uk/docs/Web/JavaScript/Reference/Strict_mode) та несуворому режимах.
Ключове слово **`this`** ("це") посилається на контекст, у якому має виконуватися уривок коду. Найчастіше воно використовується в методах об'єктів, де `this` посилається на об'єкт, до якого приєднано метод, що дає змогу використовувати один і той же метод для різних об'єктів.

У більшості випадків значення `this` визначається тим, як функція викликана ({{Glossary("binding", "зв'язування")}} під час виконання). Воно не може бути задано присвоєнням під час її виконання, і воно може бути різним кожного разу, коли функція викликається. Метод {{jsxref("Function.prototype.bind()")}} може [задати значення `this` функції незалежно від того, як вона викликається](#metod-bind), а [стрілкові функції](/uk/docs/Web/JavaScript/Reference/Functions/Arrow_functions) не надають власного зв'язування `this` (вони зберігають значення `this` зовнішнього лексичного контексту).
Значення `this` у JavaScript залежить від того, як функція закликана ({{glossary("binding", "зв'язування")}} під час виконання), а не тим, як вона визначена. Коли звичайна функція закликається як метод об'єкта (`obj.method()`), `this` вказує на цей об'єкт. Коли вона закликається як самостійна функція (не приєднана до жодного об'єкта – `func()`), `this` зазвичай посилається на [глобальний об'єкт](/uk/docs/Glossary/Global_object) (у несуворому режимі) або `undefined` (у [суворому режимі](/uk/docs/Web/JavaScript/Reference/Strict_mode)). Метод {{jsxref("Function.prototype.bind()")}} може створити функцію, у якої зв'язування `this` не змінюється, а методи `apply()` та `call()` можуть задати значення `this` для конкретного виклику.

[Стрілкові функції](/uk/docs/Web/JavaScript/Reference/Functions/Arrow_functions) відрізняються щодо обробки `this`: вони успадковують `this` від батьківської області видимості під час свого визначення. Ця поведінка робить стрілкові функції особливо корисними як функцій зворотного виклику та для збереження контексту. Проте стрілкові функції не мають власного зв'язування `this`. Тому їх значення `this` не можна задати за допомогою методів `bind()`, `apply()` або `call()`, і воно не посилається на поточний об'єкт у методах об'єктів.

{{EmbedInteractiveExample("pages/js/expressions-this.html")}}

Expand All @@ -31,7 +33,7 @@ this

Усередині функції значення `this` залежить від того, як вона викликана. Про `this` слід думати як про прихований параметр функції: як і параметри, оголошені у визначенні функції, `this` – це зв'язування, яке мова створює при виконанні тіла функції.

Для типової функції значення `this` – це об'єкт, на якому викликається функція. Іншими словами, якщо виклик функції має вигляд `obj.f()`, то `this` посилається на `obj`. Наприклад:
Для звичайної функції (не стрілкової, не зв'язаної тощо) значення `this` – це об'єкт, на якому викликається функція. Іншими словами, якщо виклик функції має вигляд `obj.f()`, то `this` посилається на `obj`. Наприклад:

```js
function getThis() {
Expand Down

0 comments on commit 143da6f

Please sign in to comment.