Array methods applied to strings
Mark S. Miller
erights at google.com
Mon May 11 13:26:04 PDT 2009
On Mon, May 11, 2009 at 12:29 PM, Erik Arvidsson
<erik.arvidsson at gmail.com> wrote:
> I think the right solution would be to use a non throwing [[Put]] for
> the Array methods for backwards compatibility.
On IE: [].pop.call('abc') === undefined
Since IE mutating array generics don't work on strings, cross-browser
web content[1] does not depend on these working on strings.
> 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.
Having mutating operations fail silently when applied to frozen arrays
is unacceptably integrity hostile. I'd rather withdraw the addition of
numeric indexing to strings than introduce a new silent failure
hazard.
[1] To the extent that we also wish to be compatible with
browser-specific content, since most browser instances are IE, most
browser-specific content is specific to IE (simple economics). That's
why the 3 out of 4 browser rule at
<http://wiki.ecmascript.org/doku.php?id=es3.1:es3.1_goals> states:
> Browser implementation unification: Consider adopting
> features that are already implemented in 3 of the 4
> browser brands, or that are deployed in 3 out 4 user
> computers and reduce cross browser incompatibilities.
This clause gives us a choice. We have consistently used that choice
to pick the saner alternative. Generally that has meant the "3 of 4
browser brands" rule. On the application of mutating array generics to
strings, the saner choice may be "3 of 4 browser instances".
--
Cheers,
--MarkM
More information about the es-discuss
mailing list