>-----Original Message-----
>From: Erik Arvidsson [mailto:[email protected]]
>...
>I think the right solution would be to use a non throwing [[Put]] for
>the Array methods for backwards compatibility.  NodeList and Arguments
>are the common array like structures that people use the array
>generics for and I can see other things like ImageData getting more
>common in the near term future. Special casing String will not help
>the common case.
>

Arguments objects in ES5 have Array.prototype as their [[Prototype]] so they 
now actually inherit all the array methods.  The array index properties and the 
length property of array objects are writable so the potential exceptions in 
the ES5 algorithms have no impact unless somebody explicitly changes the 
attributes of an argument object's properties.

Regarding NodeList, if its elements are writable then there is no issue.  If 
its elements are readonly then I have the same question that I had for Strings 
what are the actual use cases for applying the other mutable array functions 
other than pop to it?  In addition, NodeList is a host object so its actually 
behavior for [[Put]] and [[ThrowingPut]] are defined anyway. In particular I 
note on IE evaluating:
        Array.prototype.pop.call(elem)
in a shell yields when elem is a NodeList (well, at least the result of a call 
to getElementsByTagName) yields: 
        TypeError: JScript object expected


_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to