在函数上访问 __proto__ 会返回一个函数

问题描述 投票:0回答:1

考虑以下代码:

function objectFunction() {
  this.x = 2;
}
console.log(Object.keys(objectFunction));
console.log(objectFunction.__proto__, objectFunction.prototype);

为什么我会得到一个访问

__proto__
上的
objectFunction
属性的函数,因为我在使用
Object.keys(objectFunction)
获得的数组中找不到此属性?
即使当我调用返回的函数时,它也返回未定义。

当我尝试运行上面的代码时,我得到以下结果:output
我们在 objectFunction 上没有键,但我能够访问

__proto__
,但事实不应该是这样。它应该返回未定义。 我从 here 知道
__proto__
仅在实例上可用,而
prototype
在函数或对象上可用。

javascript object prototype
1个回答
0
投票

__proto__
Object.prototype
上的不可枚举 getter,存在于
objectFunction
的原型链中 (
objectFunction
->
Function.prototype
->
Object.prototype
)

所以你得到了

Function.prototype

© www.soinside.com 2019 - 2024. All rights reserved.