当你跑步时:
window.toString.call("")
在FF / CH中一切都很好,但在IE8中你会遇到脚本错误。事实证明,IE8中window.toString.call
未定义?
你也可以运行这个:
window.toString instanceof Function;
// false
alert(window.toString);
// function toString() {
// [native code]
// }
为什么会这样以及如何解决?我开始想知道jQuery是如何起作用的?
答案 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();