什么是 - 函数Empty() - 在javascript中?

Roy*_*mir 5 javascript

我有这个功能:

function fff(){}

这是一个function它是一个实例Function constructor

所以fff.__proto__应该告诉我:function Function() { [native code] }

但事实并非如此.

表明 : function Empty() {}

在此输入图像描述

这只是我看到的constructor财产__proto__function Function() { [native code] }

题 :

这个function Empty() {}功能是什么
,为什么fff.__proto__不告诉我:function Function() { [native code] }

注:我知道,__proto__是在查找链用来解决方法等实际的对象prototype是使用对象建立 __proto__,当你创建一个对象new.

但是又一次:函数fff是一个在幕后通过newing实例化的函数Function constructor.......所以?

SLa*_*aks 5

你是误会__proto__.

__proto__返回对象继承的原型值; 不是它的构造函数.

所有功能(包括Function其自身)都继承Function.prototype.
因此,Function.__proto__ === Function.prototype是真的.
该规范的第15.3.4节中规定了此对象:

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

也可以看看

15.3.4.2 Function.prototype.toString()

返回函数的依赖于实现的表示.此表示具有FunctionDeclaration的语法.请特别注意,表示字符串中的空格,行终止符和分号的使用和放置取决于实现.

toString功能不是通用的; 如果此值不是Function对象,则抛出TypeError异常.因此,它不能转移到其他种类的对象用作方法.