> Specifically regarding ToObject.  It's use is important in minimizing the 
> semantic differences between primitive values and Objects. In ES5 we 
> eliminated the automatic wrapping of primitive values  used as this values in 
> method invocations.  That means that in most cases 42 and (new Number(42)) 
> can be used interchangeably. If we start leaving out ToObject calls in random 
> places the distinction between a primitive value and a wrapped primitive 
> values will start tripping people up.

This actually is apropos of something I'd been meaning to ask about. Consider 
the following JSFiddle:

http://jsfiddle.net/CxdMs/15/

It seems reasonably clear that the result for functions should be object 
(non-strict)/number (strict), according to section 10.4.3.

But for getters, the major browsers disagree, and my spec-fu can't find 
anything besides the abovementioned section. Firefox and IE9 say object/object, 
while V8 says number/number. And at least one version of JavaScriptCore we have 
lying around says number/object. If someone could walk me through the spec 
correctly, I'd be happy to file appropriate browser bugs.

Note that this is a real-world issue. The Chai.js assertion library is trying 
to break free of V8 and become useful in browsers, but is encountering problems 
due to this behavior:

https://github.com/logicalparadox/chai/issues/32

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

Reply via email to