在这里,应用了别名:
toString = ObjProto.toString,
然而,要使用toString,它也可以像这样直接访问,完全不使用上面的代码。
toString()
在控制台中试用它工作正常。在直接代码中试用它也可以正常工作。我的猜测是旧浏览器可能无法以这种方式访问它。
我如何进一步研究这个问题?
Caniuse没有关于它的信息。
Google在前10个左右的点击中没有任何有用的东西。
因为它位于Object.prototype
上,所以它可以从继承自Object的全局对象访问(只有那些继承而不是所有全局对象的对象),例如Number。
但我的观点是,它也可以直接访问而不必使用全局对象实例。
toString(some_var);
这是一个SO Q/A,它表明所有浏览器都不支持window.toString,为什么会这样。
答案 0 :(得分:6)
从Object继承的全局对象,
这是一个错误的假设,global objects are host objects并且他们可以从他们想要的任何东西继承或者根本不继承任何东西。例如,代码在IE10中不起作用。
toString
上存储的特定 Object.prototype
方法是唯一一个肯定会返回内部类名的方法。函数,数组,数字等不继承Object.prototype
toString
方法,而是定义其自己的 toString
方法,如Number.prototype.toString !== Object.prototype.toString
中所示。