Is this really the most direct way to get %AsyncIteratorPrototype%?

T.J. Crowder tj.crowder at farsightsoftware.com
Tue Aug 14 15:57:45 UTC 2018


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20180814/ec60dc50/attachment-0001.html>


More information about the es-discuss mailing list