为什么`toString`不等同于`window.toString`?

Wil*_*hes 7 javascript console firebug global-variables

我相信所有全局变量都可以从全局对象中访问.因此,如果我可以访问x(并且x不是本地绑定),那么window.x是相同的值.

但是,在一个网页(在JSFiddle上):

window === this // true in Chrome and Firefox
toString === window.toString // true in Chrome and Firefox
Run Code Online (Sandbox Code Playgroud)

但在控制台中:

window === this // true in Chrome console and Firebug, false in Firefox web console
toString === window.toString // false in Chrome, Firebug and Firefox web console
Run Code Online (Sandbox Code Playgroud)

为什么是这样?为什么windowChrome控制台中的全局对象却toString没有绑定window.toStringtoString在Firefox的控制台中绑定什么?控制台中还有哪些其他全局值?

Jos*_*ber 3

toString不是全局变量。它是几乎所有对象(包括对象)共享的方法window

实际的全局变量在对象上始终可用window

  • 即,全局对象(窗口)实际上没有属性“toString”,其原型有。`window.hasOwnProperty('toString') === false` (2认同)