7

当你运行时:

window.toString.call("")

在 FF/CH 中一切正常,但在 IE8 中出现脚本错误。调查更多结果window.toString.call是,IE8 中未定义?

你也可以运行这个:

window.toString instanceof Function;
// false

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

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

4

2 回答 2

15

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

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

于 2009-11-03T18:12:27.643 回答
1

NickFitz 是正确的,您要找到的主机对象上的 toString 方法纯粹是这样,如果您这样做了

警报(窗口);

你会得到文本 [object]

您的示例中使用的 javascript 方法 toString() 所能实现的就是从字符串中创建一个字符串,因此正确的方法是执行您正在尝试的操作;

var a =new String ("");

或者干脆

var b = "";

或者如果你真的想傻;

var b = "".toString();
于 2009-11-03T18:27:55.757 回答