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

时间:2013-10-28 16:56:51

标签: javascript

我有这个功能:

function fff(){}

functionFunction constructor

的一个实例

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

但事实并非如此。

它显示:function Empty() {}

enter image description here

我只看到constructor的{​​{1}}属性__proto__

问题:

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

nb的 我知道function Function() { [native code] }是查找链中用于解析方法等的实际对象。__proto__是用于构建 prototype的对象使用__proto__创建对象时。

但是又一次:函数new是一个函数,它通过引用fff在幕后实例化...所以?

1 个答案:

答案 0 :(得分: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异常。因此,它不能转移到其他类型的对象用作方法。