"not a Date object" vs. "not an object with [[Class]] of ''Date''"

Dmitry A. Soshnikov dmitry.soshnikov at gmail.com
Sat Oct 2 13:58:00 PDT 2010

  On 03.10.2010 0:51, Brendan Eich wrote:
> On Oct 2, 2010, at 6:49 AM, Jorge wrote:
>> On 02/10/2010, at 15:29, Brendan Eich wrote:
>>> On Sep 6, 2010, at 1:43 AM, Dmitry A. Soshnikov wrote:
>>>> For what to create a proxy? It's only for catch-traps (yes, it may be used additionally to create a _catcher_ with "Array" [[Class]], but without additions -- i.e. if a user wants just to inherit from Array.prototype and to have all arrays' stuff -- proxies are not needed to him).
>>> Proxies are required to update length to be one greater than index (property name-string P such that ToString(ToUint32(P)) == P and ToUint32(P) is not 2^32 - 1) when setting an indexed property. Array's magic [[Put]] is not inherited.
>> Why not simply spec an Array.create() ?
>> -no need to redefine what an array is.
> It's not clear from kangax's blog post that an array with an extra object on its prototype chain before Array.prototype is enough, but if it is, then yes: Array.create is simpler and more direct than using proxies.
>> -no need to learn new concepts ( we're used to Object.create() already )
> There's definitely a new concept here. Right now you can't create an array instance whose [[Prototype]] is not some Array.prototype. Array.create changes that.
>> -easy to grasp, expected behaviour.
>> -it's a 3-liner that would take no more than 3 minutes to implement in JS in any current UA.
>> -it would just need to be in the ES specs.
> "3-liner", "3 minutes" and "just" need demonstration. Are you writing the code and spec patches? Talk is cheap :-|. Arrays are highly optimized in modern engines (up to some array sparseness limit). Adding a prototype object shouldn't hurt if the new proto-object contains no indexed properties, though.

Off-topic: what's wrong with the es-archive? Take a look please: 
https://mail.mozilla.org/pipermail/es-discuss/2010-October/thread.html I 
sent reply with implemented extended Object.create and meta-constructor 
(meta-class) but it's not displayed there. Maybe it's not reached 
es-discuss at all? If it didn't (by some reason), consider this 
implementation (http://gist.github.com/607668). It allows to create 
objects of any [[Class]] with needed inheritance chains.


> /be
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss

More information about the es-discuss mailing list