
{{alias}}( target, handlers )
    Returns a proxy object implementing custom behavior for specified object
    operations.

    The following "traps" are supported:

    - getPrototypeOf( target )
        Trap for `Object.getPrototypeOf()`. Can be used to intercept the
        `instanceof` operator. The method must return an object or `null`.

    - setPrototypeOf( target, prototype )
        Trap for `Object.setPrototypeOf()`. The method must return a boolean
        indicating if prototype successfully set.

    - isExtensible( target )
        Trap for `Object.isExtensible()`. The method must return a boolean.

    - preventExtensions( target )
        Trap for `Object.preventExtensions()`. The method must return a boolean.

    - getOwnPropertyDescriptor( target, property )
        Trap for `Object.getOwnPropertyDescriptor()`. The method must return an
        object or `undefined`.

    - defineProperty( target, property, descriptor )
        Trap for `Object.defineProperty()`. The method must return a boolean
        indicating whether the operation succeeded.

    - has( target, property )
        Trap for the `in` operator. The method must return a boolean.

    - get( target, property, receiver )
        Trap for retrieving property values. The method can return any value.

    - set( target, property, value, receiver )
        Trap for setting property values. The method should return a boolean
        indicating whether assignment succeeded.

    - deleteProperty( target, property )
        Trap for the `delete` operator. The method must return a boolean
        indicating whether operation succeeded.

    - ownKeys( target )
        Trap for `Object.keys`, `Object.getOwnPropertyNames()`, and
        `Object.getOwnPropertySymbols()`. The method must return an enumerable
        object.

    - apply( target, thisArg, argumentsList )
        Trap for a function call. The method can return any value.

    - construct( target, argumentsList, newTarget )
        Trap for the `new` operator. The method must return an object.

    All traps are optional. If a trap is not defined, the default behavior is to
    forward the operation to the target.

    Parameters
    ----------
    target: Object
        Object which the proxy virtualizes.

    handlers: Object
        Object whose properties are functions which define the behavior of the
        proxy when performing operations.

    Returns
    -------
    p: Object
        Proxy object.

    Examples
    --------
    > function get( obj, prop ) { return obj[ prop ] * 2.0 };
    > var h = { 'get': get };
    > var p = new {{alias}}( {}, h );
    > p.a = 3.14;
    > p.a
    6.28


{{alias}}.revocable( target, handlers )
    Returns a revocable proxy object.

    Parameters
    ----------
    target: Object
        Object which the proxy virtualizes.

    handlers: Object
        Object whose properties are functions which define the behavior of the
        proxy when performing operations.

    Returns
    -------
    p: Object
        Revocable proxy object.

    p.proxy: Object
        Proxy object.

    p.revoke: Function
        Invalidates a proxy, rendering a proxy object unusable.

    Examples
    --------
    > function get( obj, prop ) { return obj[ prop ] * 2.0 };
    > var h = { 'get': get };
    > var p = {{alias}}.revocable( {}, h );
    > p.proxy.a = 3.14;
    > p.proxy.a
    6.28
    > p.revoke();

    See Also
    --------

