如果函数是javascript中的对象,为什么function.constructor指向Function而不是Object?

Yet*_*ene 5 javascript

当像这样从窗口对象创建以下函数时,

         function userInfo() {};
Run Code Online (Sandbox Code Playgroud)

由于函数是对象,userInfo.constructor 怎么会显示函数而不是对象?

使用以下内容时,它甚至会显示 Function 而不是 Object,

         Function.constructor
Run Code Online (Sandbox Code Playgroud)

Ori*_*iol 2

userInfo.constructorFunction因为:

  1. userInfo没有自己的 constructor 财产。
  2. userInfo的 [[Prototype]] 内部槽的值为Function.prototype
  3. Function.prototype有自己的 constructor 财产,其价值为Function

Function.constructor也是Function因为同样的原因:

  1. Function没有自己的 constructor 财产。
  2. Function的 [[Prototype]] 内部槽的值为Function.prototype
  3. Function.prototype有自己的 constructor 财产,其价值为Function

也就是说,Function实例(例如实例userInfoFunction实例本身)从 继承一个 constructor 属性Function.prototype,该属性可用于知道它们是 的实例Function