2015-04-15 178 views
1
function toString(obj) { 
     return {}.toString.call(obj); 
    } 

我在一些开源的javascript项目中看到了这个函数。这个功能的目的是什么?覆盖toString函数

回答

1

它在数字和字符串上使用时会产生类似[object Number][object String]的结果,但其确切用途取决于它的使用方式。

在你正在查看的代码中查找它的用法的例子,这应该让你更好地了解它的用途。

它可以作为一种方法来识别未知变量的类型更复杂的替代typeof,因为它返回类似[object HTMLBodyElement]

2

让我们每个组件依次为:

return返回任何值call函数返回。

{}这声明了一个空对象。

.toStringtoString功能对每个对象。

.call:方法调用与给定this值的函数(见MDN Documentation)。在这种情况下,this是传递给toString函数的obj

1

jsve's answer结果为您提供了“是什么”。 '为什么'是:在输入对象上使用基地Object.toString(),即使该对象自己的原型具有更专门的toString()