Javascript IE8中未定义window.toString.call
运行时:Javascript IE8中未定义window.toString.call,javascript,jquery,exception,internet-explorer-8,tostring,Javascript,Jquery,Exception,Internet Explorer 8,Tostring,运行时: window.toString.call("") 在FF/CH中一切正常,但在IE8中会出现脚本错误。进一步调查后发现,window.toString.call在IE8中没有定义 您也可以运行此选项: window.toString instanceof Function; // false alert(window.toString); // function toString() { // [native code] // } 为什么会这样以及如何解决它?我开始想知道j
window.toString.call("")
在FF/CH中一切正常,但在IE8中会出现脚本错误。进一步调查后发现,window.toString.call
在IE8中没有定义
您也可以运行此选项:
window.toString instanceof Function;
// false
alert(window.toString);
// function toString() {
// [native code]
// }
为什么会这样以及如何解决它?我开始想知道jQuery最初是如何工作的?
窗口是一个宿主对象,并且不要求宿主对象派生自本机对象对象。在IE中(可能在某些其他浏览器中),主机对象不支持,因此它们不支持任何本机方法或属性(尽管它们可能具有与脚本可以访问的本机方法或属性同名的方法或属性)
如果您只想获得语言实现的默认本机toString
方法,那么您应该使用Object.prototype.toString.call(“”
)NickFitz是正确的,您正在查找的宿主对象上的toString方法是完全正确的,如果您这样做了
警报(窗口)
您将获得文本[对象]
示例中使用的javascript方法toString()所能实现的就是从字符串生成字符串,因此正确的方法是:
var a =new String ("");
或者干脆
var b = "";
或者如果你真的想变得愚蠢
var b = "".toString();
顺便说一句,当我在Firefox上调用window.toString.call(“”
时,它返回null
。此外,Object.prototype.toString.call(“”
返回字符串[Object string]
,这与预期非常接近。这可能有助于解释您实际想要做的事情。不要将其他答案称为“高于”或“低于”,因为答案的位置取决于当时选择的排序和计票情况。试着提供答案的永久性链接。我认为你甚至可以只使用锚而不是绝对的URL。例如,[1]:#1669142