2013-07-21 141 views
2

我看到underscore.js.Object.prototype.toString()的用途是什么?

这是此代码,应用了别名:

toString = ObjProto.toString, 

但是,要使用的toString它也直接存取方式,瓦特/输出使用上面的代码在所有。

toString() 

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

我如何进一步观察?

Caniuse没有关于它的信息。

Google拉起没有用的前10个左右命中。

因为它是Object.prototype,它是由从对象继承(只有那些继承,并不是所有的全局对象)全局对象,如号码访问。

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

toString(some_var); 

这里是一个SO Q/A这表明window.toString不是在所有的浏览器支持,这是为什么。

回答

6

全局对象从对象继承,

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

特别toString存储在Object.prototype上的方法是唯一一个返回内部类名称的肯定方法。函数,数组,数字等不会继承Object.prototypetoString方法,但会定义它们的自己的toString方法,如Number.prototype.toString !== Object.prototype.toString中所述。

+0

窗口不从Object继承。这不是假设,这是事实。例如,从Object继承的数字。窗口没有。那有意义吗?你了解我所取得的资格吗? –

+1

@stack_temp你声称全局对象是从Object继承的,这就是我所引用的。 – Esailija

+0

'是唯一一个返回肯定的内部类名'这是不正确的。它可以被重写。 – freakish