Skip to content

Commit b595011

Browse files
committed
update article
1 parent 34f76ea commit b595011

1 file changed

Lines changed: 11 additions & 15 deletions

File tree

  • 1-js/04-object-basics/05-object-toprimitive

1-js/04-object-basics/05-object-toprimitive/article.md

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,24 @@
33

44
Что произойдёт, если сложить два объекта `obj1 + obj2`, вычесть один из другого `obj1 - obj2` или вывести их на экран, воспользовавшись `alert(obj)`?
55

6-
Существуют специальные методы, которые производят эти преобразования.
6+
В этом случае, объекты сначала автоматически преобразуются в примитивы, а затем выполнится операция.
77

8-
В главе <info:type-conversions> мы видели правила для численных, строковых и логических преобразований. Но мы обделили вниманием объекты. Теперь, поскольку мы уже знаем о методах объектов и символах, можно исправить это.
8+
В главе <info:type-conversions> мы видели правила для численных, строковых и логических преобразований. Но обделили вниманием объекты. Теперь, поскольку мы уже знаем о методах объектов и символах, можно исправить это.
99

10-
Для объектов нет логических преобразований, потому что все объекты являются `true` в логическом контексте. Поэтому мы будем рассматривать только преобразования к строке и числу.
11-
12-
Преобразование к числу происходит, когда мы вычитаем объекты или производим с ними математические операции. Например, Объект `Date` (рассматривался в статье <info:date>) можно вычитать, и результатом вычислений `date1 - date2` будет время между двумя датами.
13-
14-
Преобразования к строке происходят, когда мы хотим вывести объекты на экран с помощью `alert(obj)` или в других схожих случаях.
10+
1. Все объекты в логическом контексте являются `true`. Существуют лишь их численные и строковые преобразования.
11+
2. Численные преобразования происходят, когда мы вычитаем объекты или применяем математические функции. Например, объекты `Date` (мы рассмотрим их в статье <info:date>) могут вычитаться и результатом `date1 - date2` будет временной отрезок между двумя датами.
12+
3. Что касается строковых преобразований -- они обычно происходят, когда мы выводим объект по типу `alert(obj)` и в подобных случаях.
1513

1614
## Преобразование к примитивам
1715

18-
Когда объекты используются в ситуациях, где нужны примитивы, например, в вызове `alert` или математических операциях, происходит их преобразование к примитивным значениям, следуя алгоритму `ToPrimitive` ([спецификация](https://tc39.github.io/ecma262/#sec-toprimitive)).
19-
20-
Этот алгоритм позволяет настроить преобразование, используя специальные методы объектов.
16+
Мы можем тонко настраивать строковые и численные преобразования, используя специальные методы объекта.
2117

22-
В зависимости от ситуации, преобразование имеет так называемый "хинт" (hint).
18+
Алгоритм преобразования, называется в [спецификации](https://tc39.github.io/ecma262/#sec-toprimitive) `ToPrimitive`. Он вызывается с "хинтом" ("hint"), который определяет тип преобразования.
2319

24-
Существует три варианта хинтов:
20+
Существует три варианта:
2521

2622
`"string"`
27-
: Когда операция ожидает строку. Например, для объектно-строковых преобразований, таких как `alert`:
23+
: Для объектно-строковых преобразований, когда совершая операцию над объектом, мы ожидаем получить строку, например `alert`:
2824

2925
```js
3026
// вывод
@@ -35,7 +31,7 @@
3531
```
3632

3733
`"number"`
38-
: Когда операция ожидает число. Например, для объектно-численных преобразований, таких как математические операции:
34+
: Для объектно-численных преобразований, таких как математические операции:
3935

4036
```js
4137
// явное преобразование
@@ -52,7 +48,7 @@
5248
`"default"`
5349
: Происходит редко, когда оператор "не уверен", какой тип ожидать.
5450

55-
Например, бинарный плюс `+` может работать с обоими типами: строками (конкатенировать их) и числами (складывать). Таким образом, и те и другие будут вычисляться. Или когда происходит сравнение объектов с помощью нестрогого равенства `==` со строкой, числом или символом.
51+
Например, бинарный плюс `+` может работать с обоими типами: строками (конкатенировать их) и числами (складывать). Таким образом, и те и другие будут вычисляться. Или когда происходит сравнение объектов с помощью нестрогого равенства `==` со строкой, числом или символом, и неясно какое преобразование должно быть выполнено.
5652

5753
```js
5854
// бинарный плюс

0 commit comments

Comments
 (0)