Формат вывода промиса на консоль
При выводе промиса на консоль он показывается примерно так:
˅ Promise {<fulfilled>: 42}
˃ __proto__: Promise
[[PromiseState]]: "fulfilled"
[[PromiseResult]]: 42
Эти [[PromiseState]] и [[PromiseResult]] показываются на уровне объекта, а не прототипа, однако:
- они не являются его свойствами
- они не являются символами (там при выводе нельзя избавиться от слова Symbol)
- они не являются приватными полями (при выводе нет решётки)
- они в отличие от всего перечисленного показываются после
__proto__, а не до
Я понимаю, что это некие внутренние поля, принадлежащие инстансу промиса, но тем не менее мне интересно, как же они реализованы и почему это вызывает столь необычное отображение? А ещё, возможно ли создать свой собственный объект, который будет выводиться аналогичным образом?
Ответы (1 шт):
Некоторые встроенные методы, написаны не на javascript, поэтому могут выглядеть необычно, или вы вообще не сможете посмотреть реализацию в консоли. И конечно, можно написать свою реализацию promise, это есть во многих туториалах по javascript.
