Skip to content

Commit 3ed4ac1

Browse files
committed
feat(1-04-object-basics): Fix language mistakes in 02-object-copy
1 parent be401e6 commit 3ed4ac1

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

1-js/04-object-basics/02-object-copy/article.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ let phrase = message;
1717

1818
![](variable-copy-value.svg)
1919

20-
Цілком очікуванний результат, згодні?
20+
Цілком очікуваний результат, згодні?
2121

2222
Об’єкти поводяться інакше.
2323

@@ -73,13 +73,13 @@ admin.name = 'Петро'; // змінено за посиланням зі зм
7373
alert(*!*user.name*/!*); // 'Петро', зміни видно з посилання зі змінної "user"
7474
```
7575
76-
Уявіть, що об’єкт -- це шафа з якимись данними (властивостями). А "адреса" цієї шафи зберігається у двох шухлядах. Спочатку ми використовуємо одну з них (`admin`), щоб дістатися цієї шафи та щось змінити. Потім, якщо ми використаємо іншу шухляду (`user`), ми все ще відкриємо ту саму шафу і отримаємо доступ до зміненого вмісту.
76+
Уявіть, що об’єкт -- це шафа з якимись даними (властивостями). А "адреса" цієї шафи зберігається у двох шухлядах. Спочатку ми використовуємо одну з них (`admin`), щоб дістатися цієї шафи та щось змінити. Потім, якщо ми використаємо іншу шухляду (`user`), ми все ще відкриємо ту саму шафу й отримаємо доступ до зміненого вмісту.
7777
7878
## Порівняння за посиланням
7979
8080
Два об’єкти рівні, лише якщо це той самий об’єкт.
8181
82-
Наприклад, тут `a` і` b` посилаються на той самий об’єкт, отже, вони рівні:
82+
Наприклад, тут `a` і `b` посилаються на той самий об’єкт, отже, вони рівні:
8383
8484
```js run
8585
let a = {};
@@ -98,7 +98,7 @@ let b = {}; // два незалежні об’єкти
9898
alert( a == b ); // false
9999
```
100100
101-
Для порівнянь, таких як `obj1 > obj2`, або для порівняння з примітивом `obj == 5`, об’єкти перетворюються на примітиви. Незабаром ми вивчимо, як працюють перетворення об’єктів, але правду кажучи, такі порівняння потрібні вкрай рідко — зазвичай вони з’являються в результаті неправильного програмування.
101+
Для порівнянь, таких як `obj1 > obj2`, або для порівняння з примітивом `obj == 5`, об’єкти перетворюються на примітиви. Незабаром ми вивчимо, як працюють перетворення об’єктів, але чесно кажучи, такі порівняння потрібні вкрай рідко — зазвичай вони з’являються в результаті неправильного програмування.
102102
103103
````smart header="Об’єкти у const-змінних можна змінювати"
104104
Важливим побічним ефектом зберігання об’єктів як посилань є те, що об’єкт, оголошений як `const`, *може* бути змінений.
@@ -121,7 +121,7 @@ alert(user.name); // Петро
121121

122122
Інакше кажучи, `const user` видає помилку, лише якщо ми намагаємося присвоїти у саму змінну інше значення: `user = ...`.
123123

124-
Тим не менш, якщо нам дійсно потрібно створювати незмінні властивості об’єкта, це також можливо, але з використанням зовсім інших методів. Про це ми згадаємо у розділі <info:property-descriptors>.
124+
Проте, якщо нам дійсно потрібно створювати незмінні властивості об’єкта, це також можливо, але з використанням зовсім інших методів. Про це ми згадаємо у розділі <info:property-descriptors>.
125125
````
126126

127127
## Клонування та злиття об’єктів, Object.assign [#cloning-and-merging-object-assign]
@@ -130,7 +130,7 @@ alert(user.name); // Петро
130130

131131
Але що, якщо нам потрібно створити копію, клон об'єкта?
132132
133-
Але якщо ми насправді цього хочемо, то нам потрібно створити новий об’єкт і відтворити структуру існуючого, перебираючи та копіюючи його властивості.
133+
Але якщо ми насправді цього хочемо, то нам потрібно створити новий об’єкт і відтворити структуру чинного, перебираючи та копіюючи його властивості.
134134
135135
Наприклад так:
136136
@@ -167,7 +167,7 @@ Object.assign(dest, ...sources)
167167
168168
Він копіює властивості всіх вихідних об’єктів у цільовий `dest`, а потім повертає його як результат.
169169
170-
Наприклад, у нас є об’єкт `user`, давайте додамо до нього пару властивостей з дозволами:
170+
Наприклад, у нас є об’єкт `user`, додаймо до нього пару властивостей з дозволами:
171171
172172
```js run
173173
let user = { name: "Микола" };
@@ -196,7 +196,7 @@ Object.assign(user, { name: "Петро" });
196196
alert(user.name); // now user = { name: "Петро" }
197197
```
198198
199-
Ми також можемо використовувати `Object.assign` щоб виконати просте клонування об’єкта:
199+
Ми також можемо використовувати `Object.assign`, щоб виконати просте клонування об’єкта:
200200
201201
```js run
202202
let user = {
@@ -311,7 +311,7 @@ structuredClone({
311311
312312
Властивості з функціями не підтримуються.
313313
314-
Для обробки таких складних випадків нам може знадобитися використовувати комбінацію методів клонування, написати спеціальний код або, щоб не винаходити колесо, взяти існуючу реалізацію, наприклад [_.cloneDeep(obj)](https://lodash.com /docs#cloneDeep) із бібліотеки JavaScript [lodash](https://lodash.com).
314+
Для обробки таких складних випадків нам може знадобитися використовувати комбінацію методів клонування, написати спеціальний код або, щоб не винаходити колесо, взяти чинну реалізацію, наприклад [_.cloneDeep(obj)](https://lodash.com /docs#cloneDeep) із бібліотеки JavaScript [lodash](https://lodash.com).
315315
316316
## Підсумки
317317

0 commit comments

Comments
 (0)