假设我定义了一个无效的简单函数:function fn() { }
现在,当我运行toString(fn)
时,我得到了“[object Object]”。当我运行toString.call(fn)
时,我得到“[对象功能]”。有谁知道为什么我在使用call
方法时获得更具体的类型?
编辑:此行为在通过FireBug控制台运行的FireFox中展示。 toString.constructor
和toString.call.constructor
都会产生“Function()”。
答案 0 :(得分:11)
toString不接受参数,因此toString(fn)
与toString()
相同,后者返回一个隐式全局对象,转换为字符串。 toString.call(fn)
调用global.toString
传递函数对象,但由于global.toString
是Object的方法,因此结果与Function.toString
不同。