ECMAScript | Тип Object

ECMAScript | Тип Object

 

Объект (Object) логически представляет собой набор свойств. Каждое свойство является либо «свойством данных» (data property), либо «свойством доступа» (accessor property):

  • Свойство данных (data property) связывает значение ключа со значением языка ECMAScript и набором логических атрибутов Boolean.
  • Свойство доступа (accessor property) связывает значение ключа с одной или двумя функциями средства доступа и набором логических атрибутов Boolean. Функции доступа используются для хранения или получения значения языка ECMAScript, связанного со свойством.

Свойства идентифицируются с помощью «значений ключей» (key values). «Значение ключа» (key value) свойства  — это либо Строковое значение ECMAScript (String), либо значение Знака (Symbol). Все значения String и Symbol, включая пустую String, действительны как ключи свойств. «Имя свойства» (property name) — это ключ свойства, который является значением String.

Целочисленный индекс (integer index) — это ключ свойства со значением String, который является канонической числовой String (см. 7.1.21) и числовое значение которого равно +0𝔽 или положительное целое Number𝔽 (253-1). Индекс массива (array index) — это целочисленный индекс, числовое значение i которого находится в диапазоне +0𝔽i < 𝔽 (232-1).

Ключи свойств (Property keys) используются для доступа к свойствам и их значениям. Существует два вида доступа к свойствам: получение (get) и установка (set), соответствующие извлечению и присвоению значения соответственно. Свойства, доступные через доступ на получение и установку, включают как «собственные свойства» (own properties), которые являются непосредственной частью объекта, так и «унаследованные свойства» (inherited properties), которые предоставляются другим связанным объектом через отношения наследования свойств. Унаследованные свойства могут быть собственными или унаследованными свойствами связанного объекта. Каждое собственное свойство объекта должно иметь значение ключа (key value), отличное от значений ключей других собственных свойств этого объекта.

Все объекты логически являются наборами свойств, но существует несколько форм объектов, которые различаются своей семантикой для доступа к своим свойствам и управления ими. См. 6.1.7.2 для определения множественных форм объектов.

 

6.1.7.1 Атрибуты свойства

Атрибуты (Attributes) используются в этой спецификации для определения и объяснения состояния свойств объекта Object. Свойство данных (data property) связывает значение ключа с атрибутами, перечисленными в Таблице 3.

Имя атрибута Область значений Описание
[[Value]] Любой тип из языка ECMAScript Значение, полученное при доступе к свойству.
[[Writable]] Boolean Если false, попытки кода ECMAScript изменить атрибут свойства [[Value]] с помощью [[Set]] не увенчаются успехом.
[[Enumerable]] Boolean Если true, свойство будет нумероваться путем перечисления для входа (см. 14.7.5). В противном случае свойство называется неперечислимым (non-enumerable).
[[Configurable]] Boolean Если false, попытки удалить свойство, изменить свойство на свойство доступа или изменить его атрибуты (кроме [[Value]] или изменение [[Writable]] на false) завершатся ошибкой.

Таблица 3: Атрибуты свойства данных — Table 3: Attributes of a Data Property

 

Свойство средства доступа (accessor property) связывает значение ключа с атрибутами, перечисленными в Таблице 4.

Имя атрибута Область значений Описание
[[Get]] Object | Undefined Если значение является объектом, это должен быть объект функции. Внутренний метод функции [[Call]] (Таблица 7) вызывается с пустым списком аргументов для получения значения свойства каждый раз, когда выполняется доступ к свойству.
[[Set]] Object | Undefined Если значение является объектом, это должен быть объект функции. Внутренний метод функции [[Call]] (Таблица 7) вызывается со списком аргументов, содержащим назначенное значение в качестве единственного аргумента каждый раз, когда выполняется набор доступа к свойству. Эффект внутреннего метода свойства [[Set]] может, но не обязательно, влиять на значение, возвращаемое последующими вызовами внутреннего метода свойства [[Get]].
[[Enumerable]] Boolean Если true, свойство должно быть пронумеровано путем перечисления для входа (см. 14.7.5). В противном случае свойство называется неперечислимым.
[[Configurable]] Boolean Если false, попытки удалить свойство, изменить свойство на свойство данных или изменить его атрибуты завершатся ошибкой.

Таблица 4: Атрибуты свойства доступа — Table 4: Attributes of an Accessor Property

 

Если начальные значения атрибутов свойства явно не указаны в этой спецификации, используется значение по умолчанию, определенное в таблице 5.

Имя атрибута Значение по умолчанию
[[Value]] undefined
[[Get]] undefined
[[Set]] undefined
[[Writable]] false
[[Enumerable]] false
[[Configurable]] false

Таблица 5: Значения атрибутов по умолчанию — Table 5: Default Attribute Values

 

6.1.7.2 Внутренние методы и внутренние слоты объекта Object

Фактическая семантика объектов в ECMAScript определяется с помощью алгоритмов, называемых «внутренними методами» (internal methods). Каждый объект в механизме ECMAScript связан с набором внутренних методов, которые определяют его поведение во время выполнения. Эти внутренние методы не являются частью языка ECMAScript. Они определены данной спецификацией исключительно в ознакомительных целях. Однако каждый объект в реализации ECMAScript должен вести себя так, как указано внутренними методами, связанными с ним. Точный способ, которым это достигается, определяется реализацией.

Имена внутренних методов полиморфны. Это означает, что разные значения объектов могут выполнять разные алгоритмы, когда для них вызывается общее имя внутреннего метода. Фактический объект, для которого вызывается внутренний метод, является «целью» вызова. Если во время выполнения реализация алгоритма пытается использовать внутренний метод объекта, который этот объект не поддерживает, возникает исключение TypeError.

«Внутренние слоты» (internal slots) соответствуют внутреннему состоянию, которое связано с объектами и используется различными алгоритмами спецификации ECMAScript. Внутренние слоты не являются свойствами объекта и не наследуются. В зависимости от конкретной спецификации внутреннего слота такое состояние может состоять из значений любых языковых типов ECMAScript или определенных значений типа спецификации ECMAScript. Если явно не указано иное, внутренние слоты выделяются как часть процесса создания объекта и не могут быть динамически добавлены к объекту. Если не указано иное, начальным значением внутреннего слота является значение undefined. Различные алгоритмы в этой спецификации создают объекты, у которых есть внутренние слоты. Однако язык ECMAScript не предоставляет прямого способа связать внутренние слоты с объектом.

Внутренние методы и внутренние слоты идентифицируются в этой спецификации с использованием имен, заключенных в двойные квадратные скобки [[]].

В таблице 6 приведены «основные внутренние методы» (essential internal methods), используемые в этой спецификации, которые применимы ко всем объектам, созданным или управляемым кодом ECMAScript. У каждого объекта должны быть алгоритмы для всех основных внутренних методов. Однако не все объекты используют одни и те же алгоритмы для этих методов.

Обычный объект (ordinary object) — это объект, который удовлетворяет всем следующим критериям:

  • Для внутренних методов, перечисленных в Таблице 6, объект использует методы, определенные в 10.1.
  • Если у объекта есть внутренний метод [[Call]], он использует метод, определенный в 10.2.1.
  • Если у объекта есть внутренний метод [[Construct]], он использует метод, определенный в 10.2.2.

Экзотический объект (exotic object) — это объект, который не является обычным объектом.

Эта спецификация распознает различные виды экзотических объектов с помощью внутренних методов этих объектов. Объект, который поведенчески эквивалентен определенному типу экзотического объекта (например, экзотическому объекту Array или экзотическому объекту связанной функции), но не имеет той же коллекции внутренних методов, указанной для этого типа, не распознается как такой вид экзотический объект.

Столбец «Подпись» (Signature) в Таблице 6 и других аналогичных таблицах описывает шаблон вызова для каждого внутреннего метода. Шаблон вызова всегда включает в себя заключенный в скобки список описательных имен параметров. Если имя параметра совпадает с именем типа ECMAScript, тогда имя описывает требуемый тип значения параметра. Если внутренний метод явно возвращает значение, за его списком параметров следует символ «» и имя типа возвращаемого значения. Имена типов, используемые в «подписях» (сигнатурах), относятся к типам, определенным в разделе 6, дополненным следующими дополнительными именами. «Любой» (any) означает, что значением может быть любой тип языка ECMAScript.

В дополнение к своим параметрам внутренний метод всегда имеет доступ к объекту, который является целью вызова метода.

Внутренний метод неявно возвращает Запись о Завершении (Completion Record), либо обычное завершение, которое содержит значение типа возвращаемого значения, показанного в его шаблоне вызова, либо завершение выброса.

Внутренний метод (Internal Method) Подпись (Signature) Описание
[[GetPrototypeOf]] ( )  Object | Null Определите объект, который предоставляет унаследованные свойства для этого объекта. Значение null указывает на отсутствие унаследованных свойств.
[[SetPrototypeOf]] (Object | Null)  Boolean Свяжите этот объект с другим объектом, который предоставляет унаследованные свойства. Передача null указывает на отсутствие унаследованных свойств. Возвращает истину (true), указывающую, что операция была завершена успешно, или ложь (false), указывающую, что операция не была успешной.
[[IsExtensible]] ( )  Boolean Определите, разрешено ли добавлять к этому объекту дополнительные свойства.
[[PreventExtensions]] ( )  Boolean Укажите, можно ли добавлять к этому объекту новые свойства. Возвращает true, если операция прошла успешно, или false, если операция не удалась.
[[GetOwnProperty]]
(propertyKey Undefined | Property Descriptor
Вернуть «дескриптор свойства» (Property Descriptor) для собственного свойства этого объекта, ключ которого — propertyKey, или undefined, если такого свойства не существует.
[[DefineOwnProperty]] (propertyKeyPropertyDescriptor Boolean Создайте или измените собственное свойство, ключ которого — propertyKey, чтобы его состояние описывалось PropertyDescriptor. Верните true, если это свойство было успешно создано / обновлено, или false, если свойство не может быть создано или обновлено.
[[HasProperty]] (propertyKey Boolean Верните логическое значение, указывающее, есть ли у этого объекта собственное или унаследованное свойство, ключ которого — propertyKey.
[[Get]] (propertyKey, Receiver) → any Вернуть значение свойства, ключ которого — propertyKey из этого объекта. Если какой-либо код ECMAScript должен быть выполнен для получения значения свойства, Receiver используется как значение this при оценке кода.
[[Set]] (propertyKeyvalueReceiver Boolean Задайте для свойства, ключ которого — propertyKey, значение value. Если какой-либо код ECMAScript должен быть выполнен для установки значения свойства, Receiver используется как значение this при оценке кода. Возвращает истину (true), если значение свойства было установлено, или ложь (false), если установить его не удалось.
[[Delete]] (propertyKey Boolean Удалите собственное свойство, ключ которого — propertyKey, из этого объекта. Верните false, если свойство не было удалено и все еще присутствует. Верните true, если свойство было удалено или отсутствует.
[[OwnPropertyKeys]] ( )  List of propertyKey Вернуть Список, все элементы которого являются собственными ключами свойств объекта.

Таблица 6: Основные внутренние методы — Table 6: Essential Internal Methods

 

 

В таблице 7 приведены дополнительные важные внутренние методы, которые поддерживаются объектами, которые могут вызываться как функции. Функциональный объект (function object) — это объект, который поддерживает внутренний метод [[Call]]. Конструктор (constructor) — это объект, который поддерживает внутренний метод [[Construct]]. Каждый объект, поддерживающий [[Construct]], должен поддерживать [[Call]]; то есть каждый конструктор должен быть функциональным объектом.

Следовательно, конструктор также может называться:

 

Internal Method Signature Description
[[Call]] (any, Список из any) → any Выполняет код, связанный с этим объектом. Вызывается через выражение вызова функции. Аргументами внутреннего метода являются значение this и Список, элементы которого являются аргументами, переданными функции выражением вызова. Объекты, реализующие этот внутренний метод, являются вызываемыми (callable).
[[Construct]] (Список из any, Object) → Object Создает объект. Вызывается через  оператор new (новый) или вызов super (супер).

Первым аргументом внутреннего метода является Список, элементы которого являются аргументами вызова конструктора или вызова super.

Второй аргумент — это объект, к которому изначально был применен оператор new.

Объекты, реализующие этот внутренний метод, называются конструкторами (constructors). Функциональный объект не обязательно является конструктором, и такие функциональные объекты, не являющиеся конструктором, не имеют внутреннего метода [[Construct]].

Таблица 7: Дополнительные важные внутренние методы функциональных объектов — Table 7: Additional Essential Internal Methods of Function Objects

 

Семантика основных внутренних методов для обычных объектов и стандартных экзотических объектов указана в разделе 10. Если какое-либо указанное использование внутреннего метода экзотического объекта не поддерживается реализацией, это использование должно вызывать исключение TypeError при попытке.

 

6.1.7.3 Инварианты основных внутренних методов

Внутренние методы объектов механизма ECMAScript должны соответствовать списку инвариантов, указанному ниже. Обычные объекты ECMAScript, а также все стандартные экзотические объекты в этой спецификации поддерживают эти инварианты. Объекты ECMAScript Proxy поддерживают эти инварианты посредством проверок во время выполнения результатов ловушек, вызванных для объекта [[ProxyHandler]].

Любая реализация, предоставляющая экзотические объекты, также должна поддерживать эти инварианты для этих объектов. Нарушение этих инвариантов может привести к непредсказуемому поведению кода ECMAScript и возникновению проблем с безопасностью. Однако нарушение этих инвариантов никогда не должно ставить под угрозу безопасность памяти реализации.

Реализация не должна позволять обходить эти инварианты каким-либо образом, например, путем предоставления альтернативных интерфейсов, которые реализуют функциональность основных внутренних методов, не применяя их инварианты.

Определения:

  • Целью target внутреннего метода является объект, для которого вызывается внутренний метод.
  • Цель не является расширяемой non-extensible, если было замечено, что она возвращает false из внутреннего метода [[IsExtensible]] или true из внутреннего метода [[PreventExtensions]].
  • Несуществующее свойство non-existent — это свойство, которое не существует как собственное свойство на нерасширяемой цели.
  • Все ссылки на SameValue соответствуют определению алгоритма SameValue.

Возвращаемое значение:

Значение, возвращаемое любым внутренним методом, должно быть записью завершения с одним из следующих вариантов:

  • [[Type]] = normal, [[Target]] = empty, и [[Value]] = значение «нормального возвращаемого типа», показанное ниже для этого внутреннего метода, или
  • [[Type]] = throw, [[Target]] = empty, и [[Value]] = любое значение языка ECMAScript.
Примечание 1

Внутренний метод не должен возвращать завершение с [[Type]] = continue, break или return.

 

[[GetPrototypeOf]] ( )

[[SetPrototypeOf]] ( V )

[[IsExtensible]] ( )

[[PreventExtensions]] ( )

[[GetOwnProperty]] ( P )

[[DefineOwnProperty]] ( P, Desc )

[[HasProperty]] ( P )

[[Get]] ( P, Receiver )

[[Set]] ( P, V, Receiver )

[[Delete]] ( P )

[[OwnPropertyKeys]] ( )

[[Call]] ( )

[[Construct]] ( )

 

[[GetPrototypeOf]] ( )

  • Обычный тип возвращаемого значения — Object или Null.
  • Если цель не является расширяемой и [[GetPrototypeOf]] возвращает значение V, то любые будущие вызовы [[GetPrototypeOf]] должны возвращать SameValue как V.
Примечание 2

Цепочка прототипов объекта должна иметь конечную длину (то есть, начиная с любого объекта, рекурсивное применение внутреннего метода [[GetPrototypeOf]] к его результату должно в конечном итоге привести к значению null). Однако это требование не может быть исполнено как инвариант уровня объекта, если цепочка прототипов включает любые экзотические объекты, которые не используют определение обычного объекта [[GetPrototypeOf]]. Такая круговая цепочка прототипов может привести к бесконечным циклам при доступе к свойствам объекта.

[[SetPrototypeOf]] ( V )

  • Обычный тип возвращаемого значения — логический (Boolean).
  • Если цель не расширяема, [[SetPrototypeOf]] должен возвращать false, если только V не является SameValue в качестве наблюдаемого [[GetPrototypeOf]] значения цели.

[[IsExtensible]] ( )

  • Обычный тип возвращаемого значения — логический (Boolean)
  • Если [[IsExtensible]] возвращает false, все будущие вызовы [[IsExtensible]] на целевом объекте должны возвращать false.

[[PreventExtensions]] ( )

  • Обычный тип возвращаемого значения — логический (Boolean).
  • Если [[PreventExtensions]] возвращает true, все будущие вызовы [[IsExtensible]] на цели должны возвращать false, и цель теперь считается нерасширяемой.

[[GetOwnProperty]] ( P )

  • Обычный тип возвращаемого значения — либо Дескриптор Свойства (Property Descriptor), либо Неопределенный (Undefined).
  • Если Тип возвращаемого значения — Дескриптор Свойства, возвращаемое значение должно быть полностью заполненным дескриптором свойства.
  • Если P описывается как ненастраиваемое(non-configurable), без возможности записи (non-writable) собственных данных свойства, все будущие вызовы [[GetOwnProperty]] (P) должны возвращать дескриптор свойства, у которого [[Value]] такое же значение, как у атрибута P [[Value]].
  • Если атрибуты P, отличные от [[Writable]], могут изменяться со временем или если свойство может быть удалено, тогда атрибут P [[Configurable]] должен быть истинным true.
  • Если атрибут [[Writable]] может измениться с false на true, тогда атрибут [[Configurable]] должен иметь значение true.
  • Если цель не является расширяемой и P не существует, тогда все будущие вызовы [[GetOwnProperty]] (P) на цели должны описывать P как несуществующий (то есть [[GetOwnProperty]] (P) должен возвращать undefined ).
Примечание 3

Как следствие третьего инварианта, если свойство описывается как свойство данных и может возвращать разные значения с течением времени, тогда один или оба атрибута [[Writable]] и [[Configurable]] должны быть истинными, даже если нет механизма изменения значения предоставляется через другие важные внутренние методы.

 

[[DefineOwnProperty]] ( P, Desc )

Обычный тип возвращаемого значения — логический (Boolean).

[[DefineOwnProperty]] должен возвращать false, если P ранее наблюдалось как не настраиваемое собственное свойство цели, кроме случаев:

  1. P — это свойство данных с возможностью записи. Ненастраиваемое свойство данных с возможностью записи может быть изменено на ненастраиваемое свойство данных с возможностью записи.
  2. Все атрибуты Desc имеют то же значение, что и атрибуты P.

[[DefineOwnProperty]] (P, Desc) должно возвращать false, если цель не является расширяемой, а P — несуществующее собственное свойство. То есть нерасширяемый целевой объект не может быть расширен новыми свойствами.

 

 

[[HasProperty]] ( P )

  • Обычный тип возвращаемого значения — логический (Boolean).
  • Если P ранее наблюдалось как ненастраиваемые собственные данные или свойство доступа цели, [[HasProperty]] должен возвращать истину true.

[[Get]] ( P, Receiver )

  • Нормальный тип возвращаемого значения — любой тип языка ECMAScript.
  • Если P ранее наблюдался как ненастраиваемое, не записываемое собственных свойство данных цели со значением V, то [[Get]] должен возвращать SameValue как V.
  • Если P ранее наблюдался как ненастраиваемое собственное свойство доступа цели, атрибут [[Get]] которого не определен undefined, операция [[Get]] должна возвращать undefined.

[[Set]] ( P, V, Receiver )

  • Обычный тип возвращаемого значения — логический (Boolean).
  • Если P ранее наблюдалось как ненастраиваемое собственное свойство данных без возможности записи для целевого объекта, то [[Set]] должен возвращать false, если V не является SameValue, что и атрибут P [[Value]].
  • Если P ранее наблюдался как ненастраиваемое собственное свойство доступа цели, атрибут [[Set]] которого не определен, операция [[Set]] должна возвращать false.

[[Delete]] ( P )

  • Обычный тип возвращаемого значения — логический (Boolean).
  • Если P ранее наблюдалось как ненастраиваемые собственные данные или свойство доступа цели, [[Delete]] должно возвращать false.

[[OwnPropertyKeys]] ( )

  • Обычный тип возвращаемого значения — Список.
  • Возвращенный Список не должен содержать повторяющихся записей.
  • Тип каждого элемента возвращаемого Список — либо String, либо Symbol.
  • Возвращенный список должен содержать по крайней мере ключи всех не настраиваемых собственных свойств, которые ранее наблюдались.
  • Если цель не является расширяемой, возвращаемый Список должен содержать только ключи всех собственных свойств цели, которые можно наблюдать с помощью [[GetOwnProperty]].

[[Call]] ( )

[[Construct]] ( )

  • Обычный тип возвращаемого значения — Object.
  • У цели также должен быть внутренний метод [[Call]].

 

6.1.7.4 Хорошо известные внутренние объекты

Хорошо известные внутренние сущности — это встроенные объекты, на которые явно ссылаются алгоритмы данной спецификации и которые обычно имеют индивидуальности, специфичные для области. Если не указано иное, каждый внутренний объект фактически соответствует набору подобных объектов, по одному на область.

В этой спецификации ссылка, такая как %name%, означает внутренний объект, связанный с текущей областью, соответствующий имени. Ссылка, такая как %name.a.b%, означает, как если бы к свойству «b» свойства «a» внутреннего объекта %name% был осуществлен доступ до оценки любого кода ECMAScript. Определение текущей области и ее внутренних свойств описано в 9.3. Хорошо известные внутренние функции перечислены в таблице 8.

Intrinsic Name (Имя внутренней сущности) Global Name (Глобальное имя) ECMAScript Language Association (Ассоциация языков ECMAScript)
%AggregateError% AggregateError The AggregateError constructor (20.5.7.1)
%Array% Array The Array constructor (23.1.1)
%ArrayBuffer% ArrayBuffer The ArrayBuffer constructor (25.1.3)
%ArrayIteratorPrototype% The prototype of Array iterator objects (23.1.5)
%AsyncFromSyncIteratorPrototype% The prototype of async-from-sync iterator objects (27.1.4)
%AsyncFunction% The constructor of async function objects (27.7.1)
%AsyncGeneratorFunction% The constructor of async iterator objects (27.4.1)
%AsyncIteratorPrototype% An object that all standard built-in async iterator objects indirectly inherit from
%Atomics% Atomics The Atomics object (25.4)
%BigInt% BigInt The BigInt constructor (21.2.1)
%BigInt64Array% BigInt64Array The BigInt64Array constructor (23.2)
%BigUint64Array% BigUint64Array The BigUint64Array constructor (23.2)
%Boolean% Boolean The Boolean constructor (20.3.1)
%DataView% DataView The DataView constructor (25.3.2)
%Date% Date The Date constructor (21.4.2)
%decodeURI% decodeURI The decodeURI function (19.2.6.2)
%decodeURIComponent% decodeURIComponent The decodeURIComponent function (19.2.6.3)
%encodeURI% encodeURI The encodeURI function (19.2.6.4)
%encodeURIComponent% encodeURIComponent The encodeURIComponent function (19.2.6.5)
%Error% Error The Error constructor (20.5.1)
%eval% eval The eval function (19.2.1)
%EvalError% EvalError The EvalError constructor (20.5.5.1)
%FinalizationRegistry% FinalizationRegistry The FinalizationRegistry constructor (26.2.1)
%Float32Array% Float32Array The Float32Array constructor (23.2)
%Float64Array% Float64Array The Float64Array constructor (23.2)
%ForInIteratorPrototype% The prototype of For-In iterator objects (14.7.5.10)
%Function% Function The Function constructor (20.2.1)
%GeneratorFunction% The constructor of generator objects (27.3.1)
%Int8Array% Int8Array The Int8Array constructor (23.2)
%Int16Array% Int16Array The Int16Array constructor (23.2)
%Int32Array% Int32Array The Int32Array constructor (23.2)
%isFinite% isFinite The isFinite function (19.2.2)
%isNaN% isNaN The isNaN function (19.2.3)
%IteratorPrototype% An object that all standard built-in iterator objects indirectly inherit from
%JSON% JSON The JSON object (25.5)
%Map% Map The Map constructor (24.1.1)
%MapIteratorPrototype% The prototype of Map iterator objects (24.1.5)
%Math% Math The Math object (21.3)
%Number% Number The Number constructor (21.1.1)
%Object% Object The Object constructor (20.1.1)
%parseFloat% parseFloat The parseFloat function (19.2.4)
%parseInt% parseInt The parseInt function (19.2.5)
%Promise% Promise The Promise constructor (27.2.3)
%Proxy% Proxy The Proxy constructor (28.2.1)
%RangeError% RangeError The RangeError constructor (20.5.5.2)
%ReferenceError% ReferenceError The ReferenceError constructor (20.5.5.3)
%Reflect% Reflect The Reflect object (28.1)
%RegExp% RegExp The RegExp constructor (22.2.3)
%RegExpStringIteratorPrototype% The prototype of RegExp String Iterator objects (22.2.7)
%Set% Set The Set constructor (24.2.1)
%SetIteratorPrototype% The prototype of Set iterator objects (24.2.5)
%SharedArrayBuffer% SharedArrayBuffer The SharedArrayBuffer constructor (25.2.2)
%String% String The String constructor (22.1.1)
%StringIteratorPrototype% The prototype of String iterator objects (22.1.5)
%Symbol% Symbol The Symbol constructor (20.4.1)
%SyntaxError% SyntaxError The SyntaxError constructor (20.5.5.4)
%ThrowTypeError% A function object that unconditionally throws a new instance of %TypeError%
%TypedArray% The super class of all typed Array constructors (23.2.1)
%TypeError% TypeError The TypeError constructor (20.5.5.5)
%Uint8Array% Uint8Array The Uint8Array constructor (23.2)
%Uint8ClampedArray% Uint8ClampedArray The Uint8ClampedArray constructor (23.2)
%Uint16Array% Uint16Array The Uint16Array constructor (23.2)
%Uint32Array% Uint32Array The Uint32Array constructor (23.2)
%URIError% URIError The URIError constructor (20.5.5.6)
%WeakMap% WeakMap The WeakMap constructor (24.3.1)
%WeakRef% WeakRef The WeakRef constructor (26.1.1)
%WeakSet% WeakSet The WeakSet constructor (24.4.1)

Таблица 8: Хорошо известные внутренние объекты — Table 8: Well-Known Intrinsic Objects

Примечание

Дополнительные записи в Таблице 95.

Intrinsic Name Global Name ECMAScript Language Association
%escape% escape The escape function (B.2.1.1)
%unescape% unescape The unescape function (B.2.1.2)

Таблица 95: Дополнительные хорошо известные внутренние объекты — Table 95: Additional Well-known Intrinsic Objects

 

 

Информационные ссылки

Стандарт ECMAScript — Раздел «6.1.7 The Object Type» — https://tc39.es/ecma262/#sec-object-type