Object.prototype.toString()的目的是什么?

时间:2013-07-21 14:54:24

标签: javascript underscore.js

我在underscore.js.

中看到了这段代码

在这里,应用了别名:

toString = ObjProto.toString,

然而,要使用toString,它也可以像这样直接访问,完全不使用上面的代码。

toString()

在控制台中试用它工作正常。在直接代码中试用它也可以正常工作。我的猜测是旧浏览器可能无法以这种方式访问​​它。

我如何进一步研究这个问题?

Caniuse没有关于它的信息。

Google在前10个左右的点击中没有任何有用的东西。

因为它位于Object.prototype上,所以它可以从继承自Object的全局对象访问(只有那些继承而不是所有全局对象的对象),例如Number。

但我的观点是,它也可以直接访问而不必使用全局对象实例。

toString(some_var);

这是一个SO Q/A,它表明所有浏览器都不支持window.toString,为什么会这样。

1 个答案:

答案 0 :(得分:6)

  

从Object继承的全局对象,

这是一个错误的假设,global objects are host objects并且他们可以从他们想要的任何东西继承或者根本不继承任何东西。例如,代码在IE10中不起作用。

toString上存储的特定 Object.prototype方法是唯一一个肯定会返回内部类名的方法。函数,数组,数字等不继承Object.prototype toString方法,而是定义其自己的 toString方法,如Number.prototype.toString !== Object.prototype.toString中所示。