Javascript toString怪癖

时间:2009-12-10 18:04:39

标签: javascript

假设我定义了一个无效的简单函数:function fn() { }

现在,当我运行toString(fn)时,我得到了“[object Object]”。当我运行toString.call(fn)时,我得到“[对象功能]”。有谁知道为什么我在使用call方法时获得更具体的类型?

编辑:此行为在通过FireBug控制台运行的FireFox中展示。 toString.constructortoString.call.constructor都会产生“Function()”。

1 个答案:

答案 0 :(得分:11)

toString不接受参数,因此toString(fn)toString()相同,后者返回一个隐式全局对象,转换为字符串。 toString.call(fn)调用global.toString传递函数对象,但由于global.toString是Object的方法,因此结果与Function.toString不同。