lib/reflect.js
function() {
    var trap = this.getTrap("ownKeys");
    if (trap === undefined) {
      // default forwarding behavior
      return Reflect.ownKeys(this.target);
    }

    var trapResult = trap.call(this.handler, this.target);

    if (trapResult === null || typeof trapResult !== "object") {
      throw new TypeError("ownKeys should return an iterator object, got " +
                          trapResult);
    }

    return trapResult;
  }
function() {
    var trap = this.getTrap("ownKeys");
    if (trap === undefined) {
      // default forwarding behavior
      return Reflect.ownKeys(this.target);
    }

    var trapResult = trap.call(this.handler, this.target);

    if (trapResult === null || typeof trapResult !== "object") {
      throw new TypeError("ownKeys should return an iterator object, got " +
                          trapResult);
    }

    return trapResult;
  }
function ( ) { var trap = this . getTrap ( "ownKeys" ) ; if ( trap === undefined ) { // default forwarding behavior return Reflect . ownKeys ( this . target ) ; } var trapResult = trap . call ( this . handler , this . target ) ; if ( trapResult === null || typeof trapResult !== "object" ) { throw new TypeError ( "ownKeys should return an iterator object, got " + trapResult ) ; } return trapResult ; }
In ES6, this trap is called for all operations that require a list
of an object's properties, including Object.getOwnPropertyNames
and Object.keys.

The trap should return an iterator. The proxy implementation only
checks whether the return value is an object.
In ES6 this trap is called for all operations that require a list of an object s properties including Object . getOwnPropertyNames and Object . keys .