From 96ed89908c5f509a62a7f09c6a01dac25b467578 Mon Sep 17 00:00:00 2001
From: Andrii Hrushetskyi <hrushetskyi.andrii@gmail.com>
Date: Sun, 16 Feb 2025 16:55:47 +0100
Subject: [PATCH 1/3] fixed typos and simplified explanation **In chapter
 01-04-04-object-methods**

Some of sentences were correct, but they were "unnatural" in Ukrainian and make understanding more difficult.
---
 .../04-object-methods/article.md               | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/1-js/04-object-basics/04-object-methods/article.md b/1-js/04-object-basics/04-object-methods/article.md
index 9f3091b90..d16bb8b4e 100644
--- a/1-js/04-object-basics/04-object-methods/article.md
+++ b/1-js/04-object-basics/04-object-methods/article.md
@@ -32,7 +32,7 @@ user.sayHi = function() {
 user.sayHi(); // Привіт!
 ```
 
-Тут ми щойно використали Function Expression (функціональний вираз) для створення функції та присвоїли її властивості `user.sayHi` об’єкта.
+Тут ми щойно створили функцію з допомогою Function Expression (функціональний вираз) та присвоїли її у властивість об’єкта `user.sayHi`.
 
 Потім ми викликали її завдяки `user.sayHi()`. Користувач тепер може говорити!
 
@@ -40,7 +40,7 @@ user.sayHi(); // Привіт!
 
 Отже, ми отримали метод `sayHi` об’єкта `user`.
 
-Звичайно, ми могли б використовувати попередньо оголошену функцію як метод, наприклад:
+Звісно ж, ми могли б використовувати і попередньо оголошену функцію як метод, наприклад:
 
 ```js run
 let user = {
@@ -111,7 +111,7 @@ let user = {
 
   sayHi() {
 *!*
-    // "this" -- це "поточний об’єкт"
+    // "this" - це "поточний об’єкт"
     alert(this.name);
 */!*
   }
@@ -181,7 +181,7 @@ function sayHi() {
 
 Значення `this` обчислюється під час виконання і залежить від контексту.
 
-Наприклад, тут одна й та ж функція призначена двом різним об’єктам і має різний "this" при викликах:
+Наприклад, тут одна й та ж функція присвоєна двом різним об’єктам і має різний "this" при викликах:
 
 ```js run
 let user = { name: "Іван" };
@@ -202,7 +202,7 @@ admin.f = sayHi;
 user.f(); // Іван  (this == user)
 admin.f(); // Адмін  (this == admin)
 
-admin['f'](); // Адмін (неважливо те, як звертатися до методу об’єкта -- через крапку чи квадратні дужки)
+admin['f'](); // Адмін (неважливо те, як звертатися до методу об’єкта - через крапку чи квадратні дужки)
 ```
 
 Правило просте: якщо `obj.f()` викликано, то `this` це `obj` під час виконання `f`. Так що в даному прикладі це `user` або `admin`.
@@ -220,15 +220,15 @@ sayHi(); // undefined
 
 В такому випадку `this` є `undefined` в суворому режимі (`"use strict"`). Якщо ми спробуємо звернутися до `this.name` трапиться помилка.
 
-У несуворому режимі значенням `this` в такому випадку буде *глобальний об’єкт* (`window` у браузері, ми дійдемо до нього пізніше в главі [](info:global-object)). Це -- поведінка, яка склалася історично та виправляється завдяки використанню суворого режиму (`"use strict"`).
+У несуворому режимі значенням `this` в такому випадку буде *глобальний об’єкт* (`window` у браузері, ми дійдемо до нього пізніше в главі [](info:global-object)). Це поведінка, яка склалася історично та виправляється завдяки використанню суворого режиму (`"use strict"`).
 
 Зазвичай такий виклик є помилкою програмування. Якщо всередині функції є `this`, вона очікує виклику в контексті об’єкта.
 ````
 
-```smart header="Наслідки вільного `this`"
+```smart header="Наслідки неприв'язаного (англ. unbound) `this`"
 Якщо ви прийшли з іншої мови програмування, то ви, мабуть, звикли до ідеї "зв’язаного `this`", де методи, визначені в об’єкті, завжди мають `this`, що посилається на цей об’єкт.
 
-В JavaScript `this` є "вільним", його значення обчислюється під час виклику і не залежить від того, де метод був оголошений, а від того, який об’єкт "перед крапкою".
+В JavaScript `this` є "вільним", його значення обчислюється під час виклику і залежить не від того, де метод був оголошений, а від того, який об’єкт "перед крапкою".
 
 Поняття `this`, що визначається в процесі роботи має як плюси, так і мінуси. З одного боку, функцію можна використовувати повторно для різних об’єктів. З іншого боку, більша гнучкість створює більше можливостей для помилок.
 
@@ -259,7 +259,7 @@ user.sayHi(); // Ілля
 ## Підсумки
 
 - Функції, які зберігаються у властивостях об’єкта, називаються "методами".
-- Методи дозволяють об’єктам "діяти" подібно до `object.doSomething()`.
+- Методи дозволяють об’єктам "діяти" як от `object.doSomething()`.
 - Методи можуть посилатися на об’єкт завдяки `this`.
 
 - Значення `this` визначається під час виконання.

From cead4c127873921bea5df386c55479e5299f6b26 Mon Sep 17 00:00:00 2001
From: Andrii Hrushetskyi <hrushetskyi.andrii@gmail.com>
Date: Sun, 16 Feb 2025 16:58:40 +0100
Subject: [PATCH 2/3] fix task 4-object-property-this There were missleading
 typo.

---
 .../04-object-methods/4-object-property-this/solution.md      | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/1-js/04-object-basics/04-object-methods/4-object-property-this/solution.md b/1-js/04-object-basics/04-object-methods/4-object-property-this/solution.md
index 4f4d57a83..2b85df8ed 100644
--- a/1-js/04-object-basics/04-object-methods/4-object-property-this/solution.md
+++ b/1-js/04-object-basics/04-object-methods/4-object-property-this/solution.md
@@ -17,13 +17,13 @@ alert( user.ref.name ); // Error: Cannot read property 'name' of undefined
 
 Це тому, що правила, які встановлюють `this`, не розглядають оголошення об’єкта. Важливий лише момент виклику метода.
 
-Тут значення `this` всередині `makeUser()` є `undefined`, оскільки воно викликається як функція, а не як метод із синтаксисом "через крапку".
+Тут значення `this` всередині `makeUser()` є `undefined`, оскільки вона викликається як функція, а не як метод із синтаксисом "через крапку".
 
 Значення `this` є одним для всієї функції, блоки коду та літерали об’єктів на це не впливають.
 
 Отже, `ref: this` дійсно бере значення `this` функції.
 
-Ми можемо переписати функцію і повернути те саме `this` зі значенням` undefined`:
+Ми можемо переписати функцію і повернути те саме `this` зі значенням `undefined`:
 
 ```js run
 function makeUser(){

From 9d489575db65d095ac8cb8937bb169b7a23314aa Mon Sep 17 00:00:00 2001
From: Andrii Hrushetskyi <hrushetskyi.andrii@gmail.com>
Date: Sun, 16 Feb 2025 17:05:52 +0100
Subject: [PATCH 3/3] =?UTF-8?q?fix=20task=207-calculator=20There=20were=20?=
 =?UTF-8?q?missed=20sence=20after=20translation.=20In=20English=20'prompts?=
 =?UTF-8?q?'=20phrase=20suggests=20use=20`prompt`=20by=20itself.=20But=20i?=
 =?UTF-8?q?n=20Ukrainian=20phrase=20'=D0=B7=D0=B0=D0=BF=D0=B8=D1=82=D1=83?=
 =?UTF-8?q?=D1=94'=20sounds=20a=20bit=20missleading.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 1-js/04-object-basics/04-object-methods/7-calculator/task.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/1-js/04-object-basics/04-object-methods/7-calculator/task.md b/1-js/04-object-basics/04-object-methods/7-calculator/task.md
index 0c1e8e160..de67fe2d4 100644
--- a/1-js/04-object-basics/04-object-methods/7-calculator/task.md
+++ b/1-js/04-object-basics/04-object-methods/7-calculator/task.md
@@ -6,7 +6,7 @@ importance: 5
 
 Створіть об'єкт `calculator` з трьома методами:
 
-- `read()` запитує два значення та зберігає їх як властивості об’єкта з іменами `a` та `b` відповідно.
+- `read()` запитує (з допомогою prompt) два значення та зберігає їх як властивості об’єкта з іменами `a` та `b` відповідно.
 - `sum()` повертає суму збережених значень.
 - `mul()` множить збережені значення і повертає результат.