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.
Спецификации
| Спецификация |
|---|
| ECMAScript® 2027 Language Specification # sec-asyncgeneratorfunction-prototype-prototype |
| ECMAScript® 2027 Language Specification # sec-asyncgeneratorfunction-instances-prototype |
Смотрите также
async function*- выражение
async function* AsyncGeneratorFunctionGeneratorFunction- Наследование и цепочка прототипов
- Итераторы и генераторы
© 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