Arrays are a good point, this is where I’d think accidental coercions are most likely. The other use case is object-as-dictionary, which will slowly be replaced by `Object.create(null)` (no need to escape in ES6+) and `Map`.
I don’t feel strongly either way, I just feel that the added spec complexity is not ideal. Especially ToBoolean() not throwing an exception, while ToString() and ToNumber() do. > On 03 Jan 2015, at 04:02, Boris Zbarsky <bzbar...@mit.edu> wrote: > > On 1/2/15 9:40 PM, Axel Rauschmayer wrote: >> Can you give an example? > > get: function( num ) { > return num != null ? > > // Return just the one element from the set > ( num < 0 ? this[ num + this.length ] : this[ num ] ) : > > // Return all the elements in a clean array > slice.call( this ); > }, > > That's from jQuery 2.1.3. > > And from the same place: > > function cache( key, value ) { > // Use (key + " ") to avoid collision with native prototype > properties (see Issue #157) > if ( keys.push( key + " " ) > Expr.cacheLength ) { > // Only keep the most recent entries > delete cache[ keys.shift() ]; > } > return (cache[ key + " " ] = value); > } > > That's after looking through about 1/10 of the library. I'll bet there are > more. I'll also bet this sort of thing appears in every single major library > out there. > > -Boris -- Dr. Axel Rauschmayer a...@rauschma.de rauschma.de
_______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss