Permalink
Switch branches/tags
Nothing to show
Find file
Fetching contributors…
Cannot retrieve contributors at this time
71 lines (48 sloc) 2.31 KB

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:
  • old Harmony Proxies
  • Harmony WeakMaps

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.