window.toString.call在IE8中未定义

当你运行:

window.toString.call("") 

在FF / CH中一切都很好但在IE8中你得到一个脚本错误。 事实certificate,在IE8中, window.toString.call是未定义的吗?

你也可以运行这个:

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

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

window是主机对象, ECMAScript语言规范(第3版)不要求从本机Object对象派生主机对象。 在IE(以及可能在某些其他浏览器中)主机对象不是,因此它们不支持任何本机方法或属性(尽管它们可能具有与本机方法或属性相同的方法或属性,可以访问脚本)。

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

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

警报(窗口);

你会得到文本[对象]

在你的例子中使用的javascript方法toString()所做的就是从字符串中创建一个字符串,以便正确地执行你正在尝试的方法;

 var a =new String (""); 

或简单地说

 var b = ""; 

或者如果你真的想要愚蠢;

 var b = "".toString();