This is the way I've found so far, allocating as few temporary objects as
possible (one, can't get rid of that temp function):

```js
const AsyncIteratorPrototype =
    Object.getPrototypeOf(
        Object.getPrototypeOf(
            async function*(){}
        ).prototype
    );
```

or, showing the steps more clearly:

```js
const asyncGeneratorFunctionInstance = async function*(){};
const AsyncGeneratorFunction = Object.getPrototypeOf(asyncGen
eratorFunctionInstance);
const AsyncGeneratorPrototype = AsyncGeneratorFunction.prototype;
const AsyncIteratorPrototype = Object.getPrototypeOf(AsyncGen
eratorPrototype);
```

(I could create an async generator by calling that temporary async
generator function, but then I just have to do another
`Object.getPrototypeOf`, so it doesn't really buy me anything.)

Is there something more direct? (Remember that `AsyncGeneratorFunction`
isn't globally exposed like `Function` is. None of the new subclasses of
Function constructors are exposed; according to [this thread][1], there
weren't enough strong use cases [that thread is for `GeneratorFunction`,
but we can extrapolate].)

-- T.J. Crowder

[1]:
https://esdiscuss.org/topic/why-generatorfunction-constructor-isn-t-directly-exposed-to-end-users
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to