W3C home > Mailing lists > Public > public-script-coord@w3.org > October to December 2009

Re: Static Array and String Generics and Host Objects (ATTN IE Team)

From: Patrick Mueller <pmuellr@yahoo.com>
Date: Wed, 9 Dec 2009 06:07:41 -0500
Message-Id: <90BC8086-3FF5-4E7E-B5C6-2F66AC4ACA2B@yahoo.com>
To: public-script-coord@w3.org, es-discuss <es-discuss@mozilla.org>
Garrett notes:

>> Array and String generics are useful for non-array objects.


The underscore library, Google's closure library, and I'm sure others, also implement some of the "Array" methods for Objects, iterating over key/value pairs.  I'd like to see this capability added as well.  At which point, making these methods of Array makes less sense.  

Perhaps a new global object, Collection, which could contain such static methods that worked on arrays and objects both.  Which fix the problem of the "appears to be duplicate functions" on Array / Array.prototype.

On Dec 7, 2009, at 3:42 PM, Allen Wirfs-Brock wrote:

> The "static generic" versions of these functions were discussed during the development of ES5 but nobody advocated strongly for their inclusions. 
> 
> My personal opinion is that having what appears to be duplicate functions on both Array and Array.prototype is a likely source of confusion for unsophisticated programmers and largely unnecessary for more sophisticated programmers who know how to use call.
> 
> The inadmissibly of the array functions for host object is explicitly allowed for by the ES3&5 specifications. However, I will make sure that those responsible for the IE DOM are aware of the issue.
> 
> Allen
> 
> -----Original Message-----
> From: es-discuss-bounces@mozilla.org [mailto:es-discuss-bounces@mozilla.org] On Behalf Of Maciej Stachowiak
> Sent: Monday, December 07, 2009 11:40 AM
> To: Garrett Smith
> Cc: public-script-coord@w3.org; es-discuss
> Subject: Re: Static Array and String Generics and Host Objects (ATTN IE Team)
> 
> 
> On Dec 4, 2009, at 1:48 PM, Garrett Smith wrote:
> 
>> Static Array and String Generics was an ES4 proposal[0], and is
>> implemented in Mozilla JavaScript 1.6[1].
>> 
>> What are the plans for including Array and String Generics in future
>> revision of ES?
> 
> I'm curious about this as well. We've had some requests to add these  
> to JavaScriptCore. I'd like to know if they were explicitly rejected  
> from standard ECMAScript, or might be considered for further  
> ECMAScript editions.
> 
> Would the ECMAScript standards community advise that we implement  
> these in WebKit or hold off?
> 
>  - Maciej
> 
>> 
>> There is no new syntax needed to support this. Scripts today can be
>> compatible by adding:-
>> 
>> if(!Array.slice) {
>>   Array.slice= function( arrayLike, start, end ) {
>>       return Array.prototype.slice.call( arrayLike,
>>         start||0, end||arrayLike.length);
>>   };
>> }
>> 
>> However, there is a remaining problem there: No guaranteed behavior
>> with Host object and Errors in IE. Example:
>> javascript:alert(   [].slice.call( document.childNodes ) );
>> 
>> Error in IE8: "JScript Object Expected".
>> 
>> It would be best for IE to use Native object for Host objects. That
>> way, unwanted surprises like the above error should be done away with.
>> 
>> Array and String generics are useful for non-array objects.
>> 
>> The outcome of [].slice.call() should be determinable. It is up to
>> public-script coord to define what happens when a Host object is used
>> in an Array.
>> 
>> Brendan's 7-month-old message[2] asking for IE to comment on Array
>> generics with host object, should be proactively addressed.
>> 
>> There are open bugs for Webkit[3] and Chrome[4] for implementing Array
>> generics At the time that I  filed the webkit bug, I was under the
>> impression that it was on its way to being standardized. I do not see
>> that happening.
>> 
>> Proposals:
>> 1) ES Harmony standardize Static Array and String generics
>> 2) The IE team use Native object for Host object collection
>> 
>> [0]http://wiki.ecmascript.org/doku.php?id=proposals:static_generics
>> [1]https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Working_with_Arrays 
>> #Working_with_Array-like_objects
>> [2]https://mail.mozilla.org/pipermail/es-discuss/2009-May/009317.html
>> [3]https://bugs.webkit.org/show_bug.cgi?id=20261
>> [4]http://code.google.com/p/v8/issues/detail?id=308
>> _______________________________________________
>> 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
> 
> _______________________________________________
> es-discuss mailing list
> es-discuss@mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss

Patrick Mueller - http://muellerware.org/
Received on Wednesday, 9 December 2009 13:54:20 UTC

This archive was generated by hypermail 2.3.1 : Wednesday, 8 May 2013 19:30:02 UTC