Why isn't `toString` equivalent to `window.toString`?
I’d believed that all global variables were accessible from the global object. So if I can access
x isn’t bound locally), then
window.x is the same value.
However, in a webpage (on JSFiddle):
window === this // true in Chrome and Firefox toString === window.toString // true in Chrome and Firefox
But in the console:
window === this // true in Chrome console and Firebug, false in Firefox web console toString === window.toString // false in Chrome, Firebug and Firefox web console
Why is this? Why is
window the global object in Chrome’s console but
toString not bound to
window.toString? What is
toString bound to in Firefox’s console? What other global values are different in the console?
3 Solutions collect form web for “Why isn't `toString` equivalent to `window.toString`?”
toString is not a global variable. It’s a method shared by almost all objects, including the
An actual global variable would always be available on the
perhaps this is related to this question?
It’s all related to the context, I believe
toString.call("foo") == this.toString.call("foo")
tostring.call("foot") != window.toString.call("foo") when this != window
I cannot reproduce your claim in Firefox. They’re both returning
[xpconnect wrapped native prototype].