ES3.1 Draft: Array generics

Pratap Lakshman (VJ#SDK) pratapl at
Sat May 31 06:17:25 PDT 2008

[I'll take shot at replying (and Doug can clarify)]

A feature that is present in 3 out of 4 browsers makes it a candidate for inclusion into ES3.1. However, that does not guarantee that it will get included.

In the present case, here are a couple of data points:
(1) It was felt that providing the thisObj could potentially introduce a security issue.
(2) In ES3.1 we want to support Function.prototype.bind.

Taken together, this led us to propose codifying Array generics as called out in the proposal I sent out (i.e. without the thisObj parameter). As Doug mentiones below, apps could continue patching Array.prototype if they so desired, but going forward new apps should use bind instead of the thisObj.

Kris Zyp then made the observation that apps on ES3.1 that relied on feature-testing (before patching Array.prototype) would end up using the 'incompatible' implementation was present! At that point, we thought we would be better off not including the proposal for now.

PS: I'll have this on the agenda for further discussion in our next conf. call.

-----Original Message-----
From: Maciej Stachowiak [mailto:mjs at]
Sent: Saturday, May 31, 2008 2:22 AM
To: Douglas Crockford
Cc: Erik Arvidsson; es3.x-discuss at; Pratap Lakshman (VJ#SDK); es4-discuss at
Subject: Re: ES3.1 Draft: Array generics

On May 20, 2008, at 7:35 AM, Douglas Crockford wrote:

> Erik Arvidsson wrote:
>> I know for a fact that not passing the thisObject as the third param
>> in methods like map etc will break real world applications such as
>> Gmail.  If JScript does not follow the defacto standard, developers
>> will have to add detection for this anormality.  I think
>> compatibility
>> with other browser should be enough for ES3.1 to standardize that the
>> thisObject should be passed as the third parameter.
> I disagree. Gmail can continue patching Array.prototype as it does
> now, so
> nothing breaks. But going forward, new applications should be using
> bind instead
> of a thisoObject.

I've heard it mentioned that ES3.1 has a "3 out of 4 browsers" rule.
What exactly is the scope of this rule, and why does it not apply here?


More information about the Es4-discuss mailing list