Object.prototype.toString === toString
怎么来的?如果我在全局范围内有这个:
var toStringValue = toString.call("foobaz");
我希望 toStringValue
是 window.toString
的值,因为 window
是默认范围,对吗?为什么 toString
本身解析为 Object.prototype.toString
而不是 window.toString
?
最佳答案
您将获得的结果将取决于宿主环境。如果我运行这个:
alert(toString === window.toString);
alert(toString === Object.prototype.toString);
...在 Chrome 上,我分别得到 true
和 false
;在 Firefox 上,我得到 false
和 false
。 IE 给出 true
和 false
但是见下文。
浏览器上的 window 对象有点棘手,因为它是一个宿主对象,如果宿主对象愿意,它们可以做一些奇怪的事情。 :-) 例如,您的 toString.call("foobaz")
将在 IE 上失败,因为 window
的 toString
不是真实的JavaScript 函数,没有call
或apply
。 (我并不是说那样做就对了,你懂的……)
关于JavaScript: 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3669466/