JavaScript: 字符串

标签 javascript scope window tostring

Object.prototype.toString === toString 怎么来的?如果我在全局范围内有这个:

var toStringValue = toString.call("foobaz");

我希望 toStringValuewindow.toString 的值,因为 window 是默认范围,对吗?为什么 toString 本身解析为 Object.prototype.toString 而不是 window.toString

最佳答案

您将获得的结果将取决于宿主环境。如果我运行这个:

alert(toString === window.toString);
alert(toString === Object.prototype.toString);​

...在 Chrome 上,我分别得到 truefalse;在 Firefox 上,我得到 falsefalse。 IE 给出 truefalse 但是见下文。

浏览器上的 window 对象有点棘手,因为它是一个宿主对象,如果宿主对象愿意,它们可以做一些奇怪的事情。 :-) 例如,您的 toString.call("foobaz") 将在 IE 上失败,因为 windowtoString 不是真实的JavaScript 函数,没有callapply。 (我并不是说那样做就对了,你懂的……)

关于JavaScript: 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3669466/

相关文章:

objective-c - NSWindow 始终位于顶部(或不可见)

javascript - 在 Javascript 中从谷歌地图读取地标信息

javascript - 在字符串的错误索引中插入的字符

node.js - 从 then 函数内访问 Promise 对象

ubuntu - 在窗口 ubuntu (ZSH) 中找不到“打开”命令

unity3d - 如何在编辑器窗口中显示和修改数组?

javascript - 在responseHTML中执行JavaScript

javascript - 解决 DOM 事件上的 javascript promise

javascript - 如何调用异步函数以在全局范围内使用 return

javascript - 扩展 javascript 函数作用域