What is `this` inside a new-invoked generator?

André Bargull andre.bargull at udo.edu
Mon Mar 23 21:10:57 UTC 2015


> Question: what does the following code snippet log in the last line?
>
> ```js
> function* gen() {
>      yield this;
> }
> let genObj = new gen();
> let [_this] = genObj;
> console.log(_this === genObj); // ???
> ```
>
> I’m finding three answers:
>
> 1. The spec says [1] that any reference to `this` in a generator invoked via `new` causes a `ReferenceError`.
>
> 2. Firefox logs `false` for the code snippet.
>
> 3. A year ago, Allen stated [2] that if you invoke a generator function via `new`, `this` points to the generator object. On other words, the code snippet would log `true`.

It's a ReferenceError. Future editions may add a meta property to make it possible to retrieve the 
current generator object (https://bugs.ecmascript.org/show_bug.cgi?id=3626).


More information about the es-discuss mailing list