As detailed elsewhere, and otherwise apparently well-known, Internet Explorer (definitely version 7, and in some instances, version 8) do not implement key functions, in particular on Array (such as forEach, indexOf, etc).
There are a number of workarounds here and there, but I’d like to fold a proper, canonical set of implementations into our site rather than copy and paste or hack away at our own implementations. I’ve found js-methods, which looks promising, but thought I’d post here to see whether another library comes more highly-recommended. A couple of miscellaneous criteria:
Many use the MDC fallback implementations (eg. for indexOf). They’re generally rigorously standards-compliant, even to the extent of explicitly checking the types of all the arguments.
Unfortunately whilst it is clear that the authors regard this code as trivial and freely-usable, there doesn’t seem to be an explicit licence-grant to put this in writing. The wiki as a whole is CC Attribution-ShareAlike, if that’s an acceptable licence (though CC isn’t designed for code as such).
js-methods looks OK in general, but is not as standards-compliant around the edges of how the functions are supposed to be (eg. undefined list items, functions that mutate the list). It’s also full of other random non-standard methods, including some questionable ones like the dodgy stripTags and the incomplete UTF-8 codec (which is also a bit unnecessary given the
unescape(encodeURIComponent)trick).For what it’s worth, here’s what I use (which I hereby release into the public domain, if it can be said to be copyrightable at all). It’s a bit shorter than the MDC versions as it doesn’t attempt to type-sniff that you haven’t done something silly like pass non-function callbacks or non-integer indexes, but apart from that it attempts to be standards-compliant. (Let me know if I’ve missed anything. ;-))
Other ECMA262-5 methods not implemented here include Array
reduce/reduceRight, the JSON ones and the few newObjectmethods that can be reliably implemented as JS functions.