window.toString.call在IE8中未定义

时间:2009-11-03 18:00:16

标签: javascript jquery exception internet-explorer-8 tostring

当你跑步时:

window.toString.call("")

在FF / CH中一切都很好,但在IE8中你会遇到脚本错误。事实证明,IE8中window.toString.call未定义?

你也可以运行这个:

window.toString instanceof Function;
// false

alert(window.toString);
// function toString() {
//    [native code]
// }

为什么会这样以及如何解决?我开始想知道jQuery是如何起作用的?

2 个答案:

答案 0 :(得分:14)

window是一个宿主对象,ECMAScript Language Specification (3rd edition)不需要从本地Object对象派生宿主对象。在IE(以及可能在其他一些浏览器中)主机对象不是,因此它们不支持任何本机方法或属性(尽管它们可能具有与本机方法或属性相同的方法或属性,可以访问脚本)。

如果你只想获得语言实现的默认原生toString方法,那么你应该使用Object.prototype.toString.call("")

答案 1 :(得分:1)

NickFitz是正确的,你发现的主机对象上的toString方法纯粹是这样的,如果你做了

警报(窗口);

你会得到文字[对象]

你的例子中使用的javascript方法toString()的所有内容都是从字符串中创建一个字符串,所以正确的方法来做你正在尝试的东西;

var a =new String ("");

或只是

var b = "";

或者你真的想要愚蠢;

var b = "".toString();