 <blockquote> <p>global objects which inherit from Object,</p> </blockquote> <p>That's a wrong assumption, <a href="http://www.ecma-international.org/ecma-262/5.1/#sec-15.1" rel="nofollow">global objects are host objects</a> and they can inherit from whatever they want or not inherit anything at all. The code for example doesn't work in IE10.</p> <p>The <em>particular</em> <code>toString</code> method stored on <code>Object.prototype</code> is the only one that returns the internal class name for sure. Functions, arrays, numbers etc do not inherit the <code>Object.prototype</code> <code>toString</code> method but define their <em>own</em> <code>toString</code> method, as in <code>Number.prototype.toString !== Object.prototype.toString</code>. </p>