Rectify availability of the Generator constructor in JS

RESOLVED WORKSFORME

Status

()

--
minor
RESOLVED WORKSFORME
9 years ago
8 years ago

People

(Reporter: dimsal.public, Unassigned)

Tracking

Firefox Tracking Flags

(Not tracked)

Details

(Reporter)

Description

9 years ago
User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)
Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)

The Generator constructor from JS1.7+ appears to be irregular: it is reported only when inquiring the type of generator expressions/variables but appears to be undefined otherwise unlike regular javascript functions/objects.

Reproducible: Always

Steps to Reproduce:
1. alert(x for (x in [null]));
2. alert((x for (x in [null])).__proto__);
3. alert(typeof Generator);
4. Generator.prototype.subject = function(functor) (functor(i) for(i in this));
5. Generator.prototype.run = function(functor) { for(i in this) functor(i); };
Actual Results:  
1. alert(x for (x in [null])); >>> [object Generator] (ok!)
2. alert((x for (x in [null])).__proto__); >>> [object Generator] (ok!)
3. alert(typeof Generator); >>> undefined (surprise: not ok!)
4. Generator.prototype.subject = function(functor)... >>> ReferenceError: Generator is not defined (not ok!)
5. Generator.prototype.run = function(functor) ... >>> ReferenceError: Generator is not defined (not ok!)

Expected Results:  
3. alert(typeof Generator) => function


Regular access to the Generator should enable useful and interesting methods through prototype extensions (trivial sample cases are demonstrated with Generator.prototype.subject and Generator.prototype.run). This should enhance the expressive power of the generator expressions, especially once methods for chaining and modification of existing generators (sort of LINQ-style) are defined.
(Reporter)

Comment 1

8 years ago
Closing this since generator prototype can be obtained indirectly via __proto__ or Object.getPrototypeOf() with a dummy generator, and no further discussion came out of this request.
Status: UNCONFIRMED → RESOLVED
Last Resolved: 8 years ago
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.