Pull to refresh

Comments 4

Отличная статья, мне нравится читать и знать, что на самом деле твориться под капотом.
Спасибо. Прочту еще раз. Конечно в букмарк.
Свойства-символы не могут быть получены с помощью Object.keys()

Reflect.ownKeys() возвращает всё подряд.


Метод @@toStringTag используется Object.prototype.toString().

А ещё он используеся девтулзами для представления объекта, что довольно удобно. Например, можно выводить понятные стектрейсы:


at $hyoo_case.Root(0).Entity_page("45GIU9OQ").Snippet_scheme().property_list (snippet.view.ts:16)
at $hyoo_case.Root(0).Entity_page("45GIU9OQ").Snippet_scheme().sub (snippet.view.tree.ts:22)
at $hyoo_case.Root(0).Entity_page("45GIU9OQ").Snippet_scheme().sub_visible (view.ts:87)
at $hyoo_case.Root(0).Entity_page("45GIU9OQ").Snippet_scheme().render (view.ts:238)
at $hyoo_case.Root(0).Entity_page("45GIU9OQ").Snippet_scheme().dom_tree (view.ts:186)
at $hyoo_case.Root(0).Entity_page("45GIU9OQ").Head().render (view.ts:250)
at $hyoo_case.Root(0).Entity_page("45GIU9OQ").Head().dom_tree (view.ts:186)
at $hyoo_case.Root(0).Entity_page("45GIU9OQ").render (view.ts:250)
at $hyoo_case.Root(0).Entity_page("45GIU9OQ").dom_tree (view.ts:186)
at $hyoo_case.Root(0).render (view.ts:250)
at $hyoo_case.Root(0).dom_tree (view.ts:186)

Тут каждая запись — это @@toStringTag объекта и после точки имя метода.
Удобно в качестве @@toStringTag задавать глобальноуникальный идентификатор объекта в рантайме.


Важно отметить, что @@toStringTag не может быть геттером, иначе девтулзы его проигнорируют.

В примере про Symbol.species, я полагаю, стоит поменять в get [Symbol.species] возврат на return MyArray. А то пример не имеет смысла, т.к. это поведение по-умолчанию. Вот если вернуть MyArray, то то результат отличается.

Sign up to leave a comment.

Articles