add typescript
This commit is contained in:
27
docs/javascript/02-objects/07-objects-to-primitives.md
Normal file
27
docs/javascript/02-objects/07-objects-to-primitives.md
Normal file
@@ -0,0 +1,27 @@
|
||||
---
|
||||
sidebar_position: 7
|
||||
---
|
||||
|
||||
# Преобразование объектов в примитивы
|
||||
|
||||
Преобразование объекта в примитив вызывается автоматически многими встроенными функциями и операторами, которые ожидают примитив в качестве значения.
|
||||
|
||||
Существует всего 3 типа (хинта) для этого:
|
||||
|
||||
- "string" (для alert и других операций, которым нужна строка)
|
||||
- "number" (для математических операций)
|
||||
- "default" (для некоторых других операторов, обычно объекты реализуют его как "number")
|
||||
|
||||
Спецификация явно описывает для каждого оператора, какой ему следует использовать хинт.
|
||||
|
||||
Алгоритм преобразования таков:
|
||||
|
||||
1. Сначала вызывается метод obj[Symbol.toPrimitive](hint), если он существует,
|
||||
2. В случае, если хинт равен "string"
|
||||
- происходит попытка вызвать obj.toString() и obj.valueOf(), смотря что есть.
|
||||
3. В случае, если хинт равен "number" или "default"
|
||||
- происходит попытка вызвать obj.valueOf() и obj.toString(), смотря что есть.
|
||||
|
||||
Все эти методы должны возвращать примитив (если определены).
|
||||
|
||||
На практике часто бывает достаточно реализовать только obj.toString() в качестве универсального метода для преобразований к строке, который должен возвращать удобочитаемое представление объекта для целей логирования или отладки.
|
||||
Reference in New Issue
Block a user