Skip to content

Commit 5fb050f

Browse files
authored
расставил буквы ё
1 parent 1a9edb6 commit 5fb050f

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

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

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
Это легко понять, если мы немного заглянем под капот того, что происходит, когда мы копируем значение.
66

7-
Давайте начнем с примитива, такого как строка.
7+
Давайте начнём с примитива, такого как строка.
88

99
Здесь мы помещаем копию `message` во `phrase`:
1010

@@ -39,7 +39,7 @@ let user = {
3939

4040
Мы можем думать об переменной объекта, такой как `user`, как о листе бумаги с адресом объекта на нем.
4141

42-
Когда мы выполняем действия с объектом, к примеру, берем свойство `user.name `, движок JavaScript просматривает то, что находится по этому адресу, и выполняет операцию с самим объектом.
42+
Когда мы выполняем действия с объектом, к примеру, берём свойство `user.name `, движок JavaScript просматривает то, что находится по этому адресу, и выполняет операцию с самим объектом.
4343

4444
Теперь вот почему это важно.
4545

@@ -57,7 +57,7 @@ let admin = user; // копируется ссылка
5757

5858
![](variable-copy-reference.svg)
5959

60-
Как вы можете видеть, все еще есть один объект, но теперь с двумя переменными, которые ссылаются на него.
60+
Как вы можете видеть, все ещё есть один объект, но теперь с двумя переменными, которые ссылаются на него.
6161

6262
Мы можем использовать любую переменную для доступа к объекту и изменения его содержимого:
6363

@@ -73,7 +73,7 @@ admin.name = 'Pete'; // изменено по ссылке из перемен
7373
alert(*!*user.name*/!*); // 'Pete', изменения видны по ссылке из переменной "user"
7474
```
7575
76-
Это как если бы у нас был шкафчик с двумя ключами, и мы использовали один из них (`admin`), чтобы войти в него и внести изменения. А затем, если мы позже используем другой ключ (`user`), мы все равно открываем тот же шкафчик и можем получить доступ к измененному содержимому.
76+
Это как если бы у нас был шкафчик с двумя ключами, и мы использовали один из них (`admin`), чтобы войти в него и внести изменения. А затем, если мы позже используем другой ключ (`user`), мы все равно открываем тот же шкафчик и можем получить доступ к изменённому содержимому.
7777
7878
## Сравнение по ссылке
7979
@@ -102,7 +102,7 @@ alert( a == b ); // false
102102
103103
## Клонирование и объединение, Object.assign
104104
105-
Итак, копирование объектной переменной создает еще одну ссылку на тот же объект.
105+
Итак, копирование объектной переменной создаёт ещё одну ссылку на тот же объект.
106106
107107
Но что, если нам всё же нужно дублировать объект? Создать независимую копию, клон?
108108
@@ -130,7 +130,7 @@ for (let key in user) {
130130
// теперь clone это полностью независимый объект с тем же содержимым
131131
clone.name = "Pete"; // изменим в нём данные
132132

133-
alert( user.name ); // все еще John в первоначальном объекте
133+
alert( user.name ); // все ещё John в первоначальном объекте
134134
```
135135
136136
Также мы можем использовать для этого метод [Object.assign](mdn:js/Object/assign).
@@ -230,7 +230,7 @@ alert(clone.sizes.width); // 51, видим результат в другом
230230
Мы можем реализовать глубокое клонирование, используя рекурсию. Или, чтобы не изобретать заново велосипед, возьмите готовую реализацию, например [_.cloneDeep(obj)](https://lodash.com/docs#cloneDeep) из библиотеки JavaScript [lodash](https://lodash.com).
231231
232232
````smart header="Объекты объявленные как константа могут быть изменены"
233-
Важным побочным эффектом хранения объектов в качестве ссылок является то, что объект, объявленный как const, может быть изменен.
233+
Важным побочным эффектом хранения объектов в качестве ссылок является то, что объект, объявленный как const, может быть изменён.
234234
235235
Например:
236236
@@ -255,8 +255,8 @@ alert(user.name); // Pete
255255
256256
## Итого
257257
258-
Объекты присваиваются и копируются по ссылке. Другими словами, переменная хранит не "значение объекта", а "ссылку" (адрес в памяти) на это значение. Поэтому копирование такой переменной или передача её в качестве аргумента функции приводит к копированию этой ссылки, а не самого объекта.
258+
Объекты присваиваются и копируются по ссылке. Другими словами, переменная хранит не "значение объекта", а "ссылку" (адрес в памяти) на это значение. Таким образом, копирование такой переменной или передача её в качестве аргумента функции копирует эту ссылку, а не сам объект.
259259
260-
Все операции с использованием скопированных ссылок (например, добавление или удаление свойств) выполняются с одним и тем же объектом.
260+
Все операции с помощью скопированных ссылок (например, добавление/удаление свойств) выполняются с одним и тем же объектом.
261261
262-
Для "простого клонирования" объекта можно использовать `Object.assign`. Необходимо помнить, что `Object.assign` не делает глубокое клонирование объекта. Если внутри копируемого объекта есть свойство, значение которого не является примитивом, оно будет передано по ссылке. Для создания "настоящей копии" (полного клона объекта) можно воспользоваться методом из сторонней JavaScript-библиотеки [_.cloneDeep(obj)](https://lodash.com/docs#cloneDeep).
262+
Чтобы создать "реальную копию" (клон), мы можем использовать `Object.assign` для так называемой "поверхностной копии" (вложенные объекты копируются по ссылке) или функцию "глубокого клонирования", такую как [_.cloneDeep(obj)](https://lodash.com/docs#cloneDeep).

0 commit comments

Comments
 (0)