このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

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 のプロパティ属性
書込可能不可
列挙可能不可
設定可能可

それぞれの AsyncGeneratorFunction インスタンスの prototype プロパティは、プロパティを持たない空のオブジェクトであり、そのプロトタイプは AsyncGeneratorFunction.prototype.prototype です。次のプロパティ属性を持っています。

AsyncGeneratorFunction.prototype.prototype のプロパティ属性
書込可能可
列挙可能不可
設定可能不可

解説

非同期ジェネレーター関数のインスタンスには 2 つの prototype プロパティがあります。まず 1 つは自身の prototype プロパティです。 2 つ目はそのプロトタイプ(つまり AsyncGeneratorFunction.prototype)上の prototype プロパティです。(すべての非同期ジェネレーター関数は AsyncGeneratorFunction のインスタンスであるため、そのプロトタイプは AsyncGeneratorFunction.prototype であることを思い出してください。)

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

非同期ジェネレーター関数が呼び出されると、その非同期ジェネレーター関数の prototype プロパティが、返される非同期ジェネレーターオブジェクトのプロトタイプです。

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

次の図は、非同期ジェネレーター関数とそのインスタンスのプロトタイプチェーンを示しています。それぞれの中空の矢印は継承関係(つまりプロトタイプリンク)を示し、それぞれの実線の矢印はプロパティ関係を示します。 なお、 gen から genFunc にアクセスする方法はありません。両者の間には instanceof 関係のみが存在します。

非同期ジェネレーターと非同期ジェネレーター関数の継承図

仕様書

仕様書
ECMAScript® 2027 Language Specification
# sec-asyncgeneratorfunction-prototype-prototype
ECMAScript® 2027 Language Specification
# sec-asyncgeneratorfunction-instances-prototype

関連情報