Javascript toString怪癖

Jus*_*sel 4 javascript

假设我有一个简单的函数定义,什么都不做: function fn() { }

现在,当我跑步时,toString(fn)我得到"[object Object]".当我跑步时,toString.call(fn)我得到"[对象功能]".有谁知道为什么我在使用这种call方法时得到更具体的类型?

编辑:此行为在通过FireBug控制台运行的FireFox中展示.既toString.constructortoString.call.constructor产量"功能()".

use*_*291 11

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