在JavaScript中,为什么typeof Function.prototype是“function”,而不是像其他原型对象一样的“object”?

时间:2011-02-01 05:38:33

标签: javascript prototype

console.log(typeof String.prototype); // object
console.log(typeof Number.prototype); // object
console.log(typeof Object.prototype); // object
console.log(typeof Boolean.prototype); // object

console.log(typeof Function.prototype); // function

为什么typeof Function.prototype会像其他原型对象一样返回“function”而非“object”?

谢谢!

3 个答案:

答案 0 :(得分:17)

这似乎在ECMAScript 5中定义:

  

15.3.4函数原型对象的属性

     

Function原型对象本身就是一个Function对象(它的[[Class]]“Function”),当被调用时,它接受任何参数并返回 undefined

答案 1 :(得分:4)

它在ECMAScript2015中提到

http://www.ecma-international.org/ecma-262/6.0/#sec-properties-of-the-function-prototype-object

Th函数原型对象被指定为一个函数对象,以确保与ECMAScript 2015规范之前创建的ECMAScript代码兼容。

此函数对象实际上并不执行函数对象要执行的任何操作。你可以用任何参数调用它&它返回undefined。这是一个愚蠢的wrt。功能对象。这是一个普通的原型对象。

由于它出于兼容性原因,它甚至没有原型属性。

有关详细说明,请参阅以下答案: enter link description here

答案 2 :(得分:0)

由于它具有任何功能应该具有的所有方法和道具,这使得有效一个功能......

考虑一下,然后让它下沉,然后你就会得到图片:)