Non-standard 
    4. [ ` Function: length ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/length)
    5. [ ` Function: name ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name)
    6. [ ` Function: prototype ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/prototype)
  8. Methods 
    1. [ ` Function.prototype[@@hasInstance]() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/@@hasInstance)
    2. [ ` Function.prototype.apply() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply)
    3. [ ` Function.prototype.bind() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind)
    4. [ ` Function.prototype.call() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call)
    5. [ ` Function.prototype.toString() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/toString)
  9. [ ` Object ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)
  10. Properties 
    1. [ ` Object.prototype.constructor ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor)
    2. [ ` Object.prototype.__proto__ ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/proto) Deprecated 
  11. Methods 
    1. [ ` Object.prototype.__defineGetter__() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/__defineGetter__) Deprecated 
    2. [ ` Object.prototype.__defineSetter__() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/__defineSetter__) Deprecated 
    3. [ ` Object.prototype.__lookupGetter__() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/__lookupGetter__) Deprecated 
    4. [ ` Object.prototype.__lookupSetter__() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/__lookupSetter__) Deprecated 
    5. [ ` Object.prototype.hasOwnProperty() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty)
    6. [ ` Object.prototype.isPrototypeOf() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isPrototypeOf)
    7. [ ` Object.prototype.propertyIsEnumerable() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/propertyIsEnumerable)
    8. [ ` Object.prototype.toLocaleString() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toLocaleString)
    9. [ ` Object.prototype.toString() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString)
    10. [ ` Object.prototype.valueOf() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/valueOf)

##  In this article

  * Try it 
  * Constructor 
  * Instance properties 
  * Instance methods 
  * Examples 
  * Specifications 
  * Browser compatibility 
  * See also 

#  Generator

The **` Generator ` ** object is returned by a [ generator function ](/en-
US/docs/Web/JavaScript/Reference/Statements/function*) and it conforms to both
the [ iterable protocol ](/en-
US/docs/Web/JavaScript/Reference/Iteration_protocols#the_iterable_protocol)
and the [ iterator protocol ](/en-
US/docs/Web/JavaScript/Reference/Iteration_protocols#the_iterator_protocol) .

` Generator ` is a subclass of the hidden [ ` Iterator ` ](/en-
US/docs/Web/JavaScript/Reference/Global_Objects/Iterator) class.

##  Try it

##  Constructor

The ` Generator ` constructor is not available globally. Instances of `
Generator ` must be returned from [ generator functions ](/en-
US/docs/Web/JavaScript/Reference/Statements/function*) :

js

    
    
    function* generator() {
      yield 1;
      yield 2;
      yield 3;
    }
    
    const gen = generator(); // "Generator { }"
    
    console.log(gen.next().value); // 1
    console.log(gen.next().value); // 2
    console.log(gen.next().value); // 3
    

In fact, there's no JavaScript entity that corresponds to the ` Generator `
constructor. There's only a hidden object which is the prototype object shared
by all objects created by generator functions. This object is often stylized
as ` Generator.prototype ` to make i