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

wei*_*lou 21 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
Run Code Online (Sandbox Code Playgroud)

为什么typeof Function.prototype像其他原型对象一样返回"function"而不是"object"?

谢谢!

lee*_*ggs 17

这似乎在ECMAScript 5中定义:

15.3.4函数原型对象的属性

Function原型对象本身就是一个Function对象(它[[Class]]"Function"),在调用时,它接受任何参数并返回undefined.


ana*_*and 5

在ECMAScript2015中提到过

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

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

该功能对象实际上并没有执行功能对象要执行的任何操作。您可以使用任何参数调用它,并且返回未定义。这是愚蠢的。功能对象。这是一个普通的原型对象。

由于出于兼容性原因它就在那儿,所以它甚至没有原型属性。

有关更多说明,您可以参考以下答案: 在此处输入链接描述