__proto__ 在 Javascript 中声明在哪里?

Where is __proto__ declared in Javascript?

考虑这个例子:

var a = {}
a.b =5
a.hasOwnProperty("b") // return True
a.hasOwnProperty("__proto__") // returns False

如果__proto__本身没有声明为对象自己的属性那么,

  1. 这个 __proto__ 属性 声明在哪里?
  2. 如果这个 属性 本身不是对象自己的 属性,那么在搜索原型链时如何引用它?

__proto__ 属性 属于 Objectprototype 对象中声明的 Object.prototype,而不是对象 [=] 的 属性 17=] 在你的代码中。这就是为什么当你这样做时它返回 false 的原因。

a.hasOwnProperty("__proto__") // returns False

如果你这样做:

console.log(Object.prototype.hasOwnProperty("__proto__")) // returns true

这个returnstrue,因为__proto__是自己的属性 of Object.prototype

console.log(Object.prototype.hasOwnProperty("__proto__")) 

** 第 2 部分:**

__proto__ 属性 是 Object.prototype 上的一个简单访问器 属性,由 gettersetter 函数组成。最终查询 Object.prototype__proto__ 的 属性 访问将找到此 属性,但不查询 Object.prototype 的访问将不会。如果在查询 Object.prototype 之前找到其他 __proto__ 属性,则 属性 将隐藏在 Object.prototype.

上找到的那个

这就是它在原型链中找到路径的方式。