【问题标题】:Where is __proto__ declared in Javascript?__proto__ 在 Javascript 中声明在哪里?
【发布时间】:2020-12-28 07:29:51
【问题描述】:

考虑这个例子:

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

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

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

【问题讨论】:

标签: javascript prototype-programming


【解决方案1】:

__proto__ 属性属于在Objectprototype 对象中声明的Object.prototype,并且不是代码中对象a 的自己的属性。这就是为什么当你这样做时它返回 false。

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

如果你这样做:

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

这将返回true,因为__proto__Object.prototype 自己的属性

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

** 第 2 部分:**

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

这就是它如何在原型链中找到自己的方式。

【讨论】:

  • 那我的第二个问题呢?
猜你喜欢
  • 2015-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多