Tom Van Cutsem wrote:
2014-11-14 21:52 GMT+01:00 Jeremy Martin <[email protected] <mailto:[email protected]>>:

    Allen's previous comments:

        Proxies are not transparent forwarders!  In particular their
        default handling of the `this` value on method invokes will
        break any built-in method that needs to access "internal
        slots" of an object.


    ...lead me to believe that this isn't the case for proxified
    Arrays, so I'd have to reverse my earlier position, as
    `Array.isArray(proxifiedArray)` evaluating to true just seems
    likely to break code.


For the particular case of Arrays though, because Array methods were carefully specified to be generic (i.e. to also work on non-array objects), they will work just fine on proxies-for-arrays:

var p = new Proxy([1,2,3] , {} );
var a = p.map(function(x) { return x + 1; });
console.log(a); // [2,3,4]

So, of all the exotic objects in the ES and WebIDL specs, Arrays are probably one of the few exceptions where a Proxy wrapper *is* transparent by default.

Right.

There is no all-or-nothing solution. Allen's words applie to exceptions to the rule. Arrays and well-written proxies for them fit in the rule. Jeremy, what do you say?

/be
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to