You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1-js/04-object-basics/02-object-copy/article.md
+9-9Lines changed: 9 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -17,7 +17,7 @@ let phrase = message;
17
17
18
18

19
19
20
-
Цілком очікуванний результат, згодні?
20
+
Цілком очікуваний результат, згодні?
21
21
22
22
Об’єкти поводяться інакше.
23
23
@@ -73,13 +73,13 @@ admin.name = 'Петро'; // змінено за посиланням зі зм
73
73
alert(*!*user.name*/!*); //'Петро', зміни видно з посилання зі змінної "user"
74
74
```
75
75
76
-
Уявіть, що об’єкт -- це шафа з якимись данними (властивостями). А "адреса" цієї шафи зберігається у двох шухлядах. Спочатку ми використовуємо одну з них (`admin`), щоб дістатися цієї шафи та щось змінити. Потім, якщо ми використаємо іншу шухляду (`user`), ми все ще відкриємо ту саму шафу і отримаємо доступ до зміненого вмісту.
76
+
Уявіть, що об’єкт -- це шафа з якимись даними (властивостями). А "адреса" цієї шафи зберігається у двох шухлядах. Спочатку ми використовуємо одну з них (`admin`), щоб дістатися цієї шафи та щось змінити. Потім, якщо ми використаємо іншу шухляду (`user`), ми все ще відкриємо ту саму шафу й отримаємо доступ до зміненого вмісту.
77
77
78
78
## Порівняння за посиланням
79
79
80
80
Два об’єкти рівні, лише якщо це той самий об’єкт.
81
81
82
-
Наприклад, тут `a` і`b` посилаються на той самий об’єкт, отже, вони рівні:
82
+
Наприклад, тут `a` і`b` посилаються на той самий об’єкт, отже, вони рівні:
83
83
84
84
```js run
85
85
let a = {};
@@ -98,7 +98,7 @@ let b = {}; // два незалежні об’єкти
98
98
alert( a == b ); // false
99
99
```
100
100
101
-
Для порівнянь, таких як `obj1 > obj2`, або для порівняння з примітивом `obj ==5`, об’єкти перетворюються на примітиви. Незабаром ми вивчимо, як працюють перетворення об’єктів, але правду кажучи, такі порівняння потрібні вкрай рідко — зазвичай вони з’являються в результаті неправильного програмування.
101
+
Для порівнянь, таких як `obj1 > obj2`, або для порівняння з примітивом `obj ==5`, об’єкти перетворюються на примітиви. Незабаром ми вивчимо, як працюють перетворення об’єктів, але чесно кажучи, такі порівняння потрібні вкрай рідко — зазвичай вони з’являються в результаті неправильного програмування.
102
102
103
103
````smart header="Об’єкти у const-змінних можна змінювати"
104
104
Важливим побічним ефектом зберігання об’єктів як посилань є те, що об’єкт, оголошений як `const`, *може* бути змінений.
@@ -121,7 +121,7 @@ alert(user.name); // Петро
121
121
122
122
Інакше кажучи, `const user` видає помилку, лише якщо ми намагаємося присвоїти у саму змінну інше значення:`user = ...`.
123
123
124
-
Тим не менш, якщо нам дійсно потрібно створювати незмінні властивості об’єкта, це також можливо, але з використанням зовсім інших методів. Про це ми згадаємо у розділі <info:property-descriptors>.
124
+
Проте, якщо нам дійсно потрібно створювати незмінні властивості об’єкта, це також можливо, але з використанням зовсім інших методів. Про це ми згадаємо у розділі <info:property-descriptors>.
125
125
````
126
126
127
127
## Клонування та злиття об’єктів, Object.assign [#cloning-and-merging-object-assign]
@@ -130,7 +130,7 @@ alert(user.name); // Петро
130
130
131
131
Але що, якщо нам потрібно створити копію, клон об'єкта?
132
132
133
-
Але якщо ми насправді цього хочемо, то нам потрібно створити новий об’єкт і відтворити структуру існуючого, перебираючи та копіюючи його властивості.
133
+
Але якщо ми насправді цього хочемо, то нам потрібно створити новий об’єкт і відтворити структуру чинного, перебираючи та копіюючи його властивості.
Ми також можемо використовувати `Object.assign` щоб виконати просте клонування об’єкта:
199
+
Ми також можемо використовувати `Object.assign`, щоб виконати просте клонування об’єкта:
200
200
201
201
```js run
202
202
let user = {
@@ -311,7 +311,7 @@ structuredClone({
311
311
312
312
Властивості з функціями не підтримуються.
313
313
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).
0 commit comments