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();