SUMMARY
Proxies are one of the more exciting and dynamic additions in the ECMAScript 6 specification. Although they have no backwards compilation support, they enable an entirely new field of metaprogramming and abstraction that was not previously available.
At a high level, proxies are a transparent virtualization of a real JavaScript object. When a proxy is created, you are able to define a handler object containing traps, which are points of interception that will be encountered by nearly every fundamental JavaScript operator and method. These trap handlers allow you to modify how these fundamental methods operate, although they are bound by trap invariants.
Alongside proxies is the Reflect API, which offers a suite of methods that identically encapsulate the behavior each trap is intercepting. The Reflect API can be thought of as a collection of fundamental operations that are the building blocks of nearly all JavaScript object APIs.
The utility of proxies is nearly unbounded, and...