I think I still haven't fully grokked what <| means on array literals, but 
could it also be used to "subclass" Array? For example:

    function SubArray() {
        return SubArray.prototype <| [];
    }

    SubArray.prototype = new Array;

I'm not sure what Array.prototype methods would or wouldn't work on instances 
of SubArray.

Dave

On Jul 8, 2011, at 5:48 PM, Allen Wirfs-Brock wrote:

> 
> On Jul 8, 2011, at 5:16 PM, Brendan Eich wrote:
> 
>> On Jul 8, 2011, at 3:49 PM, Allen Wirfs-Brock wrote:
>> 
>>> 2) Anything that can be done declaratively can also be done imperatively.
>> 
>> What's the imperative API for <| (which has the syntactic property that it 
>> operators on newborns on the right, and cannot mutate the [[Prototype]] of 
>> an object that was already created and perhaps used with its original 
>> [[Prototype]] chain)?
> 
> Fair point and one I was already thinking about :-)
> 
> For regular objects, it is Object.create.
> 
> For special built-in object with literal forms, I've previously argument that 
>  <| can be used to implement an imperative API:
> 
> Array.create = function (proto,members) {
>     let obj = proto <| {};
>     Object.defineProperties(obj,members);
>      return obj;
> }
> 
> Basically, <| is sorta half imperative operator, half declaration component.
> 
> This may be good enough.  It would be nice it it was and we didn't have to 
> have additional procedural APIs for constructing instances of the built-ins.  
> Somebody has already pointed out <| won't work for built-in Date objects 
> because they lack a literal form. I think the best solution for that is to 
> actually reify access to a Date object's timevalue by making it a private 
> named property.   BTW, way did ES1(?) worry about allowing for alternative 
> internal timevalue representations?  If in really there really any perf 
> issues that involve whether or not the timevalue is represented as a double 
> or something else?
> 
> Allen
> 
> _______________________________________________
> es-discuss mailing list
> es-discuss@mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss

_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to