Spec-Zone.ru › JavaScript

AsyncGeneratorFunction.prototype.prototype

Свойство prototype объекта AsyncGeneratorFunction.prototype является общим для всех функций-асинхронных генераторов. Его значение — AsyncGenerator.prototype. Каждая функция-асинхронный генератор, созданная с помощью синтаксиса async function* или конструктора AsyncGeneratorFunction(), также имеет собственное свойство prototype, прототипом которого является AsyncGeneratorFunction.prototype.prototype. Когда вызывается функция-асинхронный генератор, её свойство prototype становится прототипом возвращаемого объекта-асинхронного генератора.

Значение

Тот же объект, что и AsyncGenerator.prototype. AsyncGeneratorFunction.prototype.prototype является технически более точным именем, но AsyncGenerator.prototype соответствует интуитивному представлению о том, что это прототип объектов-асинхронных генераторов.

Атрибуты свойства AsyncGeneratorFunction.prototype.prototype
Изменяемое нет
Перечислимое нет
Конфигурируемое да

Свойство prototype каждого экземпляра AsyncGeneratorFunction является пустым объектом без свойств, прототипом которого является AsyncGeneratorFunction.prototype.prototype. Оно имеет следующие атрибуты свойства:

Атрибуты свойства AsyncGeneratorFunction.prototype.prototype
Изменяемое да
Перечислимое нет
Конфигурируемое нет

Описание

Экземпляр функции-асинхронного генератора имеет два свойства prototype. Первое — это его собственное свойство prototype. Второе — это свойство prototype в его прототипе, которым является AsyncGeneratorFunction.prototype. (Помните, что каждая функция-асинхронный генератор является экземпляром AsyncGeneratorFunction, поэтому AsyncGeneratorFunction.prototype является её прототипом.)

async function* genFunc() {}
const AsyncGeneratorFunctionPrototype = Object.getPrototypeOf(genFunc);
console.log(Object.hasOwn(genFunc, "prototype")); // true
console.log(Object.hasOwn(AsyncGeneratorFunctionPrototype, "prototype")); // true

Когда вызывается функция-асинхронный генератор, свойство prototype этой функции становится прототипом возвращаемого объекта-асинхронного генератора.

const gen = genFunc();
const proto = Object.getPrototypeOf;
console.log(proto(gen) === genFunc.prototype); // true
console.log(proto(proto(gen)) === AsyncGeneratorFunctionPrototype.prototype); // true

Следующая диаграмма иллюстрирует цепочку прототипов функции-асинхронного генератора и её экземпляров. Каждая полая стрелка указывает на отношение наследования (т.е. ссылку на прототип), а каждая сплошная стрелка указывает на отношение свойства. Обратите внимание, что нет способа получить доступ к genFunc из gen — у них есть только отношение instanceof.

The inheritance diagram of async generators and async generator functions

Спецификации

Спецификация
ECMAScript® 2027 Language Specification
# sec-asyncgeneratorfunction-prototype-prototype
ECMAScript® 2027 Language Specification
# sec-asyncgeneratorfunction-instances-prototype

Смотрите также

  • async function*
  • выражение async function*
  • AsyncGeneratorFunction
  • GeneratorFunction
  • Наследование и цепочка прототипов
  • Итераторы и генераторы

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AsyncGeneratorFunction/prototype

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API