JavaScript
Pull request Compare This branch is 215 commits behind tvcutsem:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
doc
examples
test
README.md
package.json
reflect.js

README.md

This is a shim for the ECMAScript-Harmony reflection module.

In a browser, after loading

<script src="reflect.js"></script>

a global object Reflect is defined that contains the functions from the ES-Harmony reflect module (see below).

The Proxy object is also updated to follow the latest direct proxies spec. To create such a proxy, call:

var proxy = Proxy(target, handler)

If you are using node.js (>= v0.7.8), you can install via npm:

npm install harmony-reflect

Then:

node --harmony
> require('harmony-reflect');

API

This module exports a single object named Reflect. See the Reflect API and Handler API docs for details.

Compatibility

The Reflect API, with support for proxies, was tested on:

  • Firefox 12 (should work since Firefox 4)
  • Chrome 19, under an experimental flag
  • spidermonkey shell
  • v8 --harmony (on 3.11.0, should work since at least v3.6)
  • node --harmony (in node v0.7.8)

Dependencies

  • ECMAScript 5/strict
  • To emulate direct proxies:

After loading reflect.js into your page or other JS environment, be aware that the following globals are patched to be able to recognize emulated direct proxies:

Object.{freeze,seal,preventExtensions}
Object.{isFrozen,isSealed,isExtensible}
Object.getPrototypeOf
Object.prototype.valueOf
Object.getOwnPropertyDescriptor
Function.prototype.toString
Date.prototype.toString
Proxy

Issues

See the list of open issues.

Next steps

  • Provide fallback behavior for part of the API, for environments without Proxy or WeakMap support.
  • More tests.
  • Switch to qunit or other unit testing framework.
  • Add example uses of proxies.
  • More detailed API description.