ECMAScript | Экзотические объекты Неизменяемого Прототипа

ECMAScript | Экзотические объекты Неизменяемого Прототипа

Экзотический объект неизменяемого прототипа — это экзотический объект, у которого есть внутренний слот [[Prototype]], который не изменится после инициализации.

Объект является «экзотическим объектом неизменяемого прототипа» (immutable prototype exotic object), если его внутренний метод [[SetPrototypeOf]] использует следующую реализацию. (Его другие важные внутренние методы могут использовать любую реализацию, в зависимости от конкретного рассматриваемого неизменяемого экзотического объекта-прототипа.)

 

Примечание

В отличие от других экзотических объектов, для неизменяемых экзотических объектов-прототипов не предусмотрена специальная операция создания абстрактных объектов. Это связано с тем, что они используются только %Object.prototype% и средами хоста, а в средах хоста соответствующие объекты потенциально экзотичны в других отношениях и, следовательно, требуют отдельной специальной операции создания.

 

[[SetPrototypeOf]] ( V )

Внутренний метод [[SetPrototypeOf]] неизменяемого прототипа экзотического объекта O принимает аргумент V (объект или null). При вызове он выполняет следующие шаги:

1. Вернуть ? SetImmutablePrototype(O, V).

 

SetImmutablePrototype ( O, V )

Абстрактная операция SetImmutablePrototype (Установить неизменяемый прототип) принимает аргументы O и V. При вызове она выполняет следующие шаги:

1. Утверждено: Либо Тип(V) - Объект, либо Тип(V) - Null.
2. Пусть current будет ? О.[[GetPrototypeOf]]().
3. Если SameValue(V, current) является true истина, вернуть true.
4. Вернуть false.

 

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

Предыдущий раздел — Экзотические объекты Пространства имён Модуля

Стандарт ECMAScript — Раздел «Immutable Prototype Exotic Objects» — https://tc39.es/ecma262/#sec-immutable-prototype-exotic-objects