Changes to Array method this coercion (was: ES3.1 Draft: 27 Oct 2008 version available)
Dean Edwards
dean at edwards.name
Mon Oct 27 17:13:28 PDT 2008
Maciej Stachowiak wrote:
>
> On Oct 27, 2008, at 4:54 PM, David-Sarah Hopwood wrote:
>
>> Robert Sayre wrote:
>>> I checked current browser behavior for this coercion to the global
>>> object for array methods (as well as apply and call).
>>>
>>> Opera 9.61
>>> Chrome Beta 1
>>> Safari 3.1.2
>>> Firefox 3.0.3
>>>
>>> http://people.mozilla.com/~sayrer/2008/10/27/this.html
>>>
>>> It seems that the above implementations coerce null or undefined to
>>> the global object for Array.map in this example, so Mozilla opposes
>>> these changes.
>>
>> The change in behaviour was quite deliberate, and I had been under the
>> impression there was a concensus in favour of it. Removing the coercion
>> of 'this' to the global object is necessary to improve the safety and
>> security of ES3.1, IMHO.
>
> Apple is also opposed to changing this behavior, at least without
> sufficient showing that the change is broadly compatible with Web content.
>
> It is also not clear to me how it improves safety and security of ES
> 3.1. What is the threat model it protects against?
>
As far as I understand it, the global object in a browser environment
has a length property indicating the number of frames. If you call
Array.map(null, fn) in a browser environment you will enumerate the
frames collection. In a non-browser environment you get different
behaviour. For one, I'd prefer not to have this behaviour.
-dean
More information about the Es-discuss
mailing list