javascript - Object是原型(prototype)链中最顶层的吗?

标签 javascript inheritance

(__proto__属性指的是对象的实际原型(prototype)。)

Object 是一个函数(也用作构造函数)。

既然它是一个函数,那么它的构造函数应该是Function

因此,如果我想将某些属性添加到 Object 中,我可以将其添加到 Function.prototype 中。

但是,Function 是一个对象,所有对象都以某种方式继承自 Object

这实际上是循环关系吗?

我在 MDN 页面中读到此内容:

(一些函数) ---> Function.prototype ---> Object.prototype ---> null

null怎么可能是Object__proto__呢?不是又是Function.prototype吗?

最佳答案

读完这篇文章后,我认为 this 中的图表回答,回答问题。

Javascript 中的每个对象都有一个 __proto__ 属性,该属性与其构造函数的原型(prototype)属性相同。 因此,如果没有找到对象的属性,它会在其 __proto__ 属性中查找并向上查找,直到找到它或达到 null

Object.prototype 是原型(prototype)链的THE 末端,Object.prototype.constructorObject .

事实上,Object 是一个函数,这意味着 Object.__proto__Function.prototype(因为 Object 可以创建为 new Function())

并不是说Object.prototype.__proto__Function.prototype

因此,__proto__ 链变为 Function.prototype --> Object.prototype --> null

我希望我做对了。

关于javascript - Object是原型(prototype)链中最顶层的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13857682/

相关文章:

javascript - 如何避免 div 动画形式落后于相关 div?

c# - 继承最派生类型的抽象类

javascript - 通过函数继承?

javascript - 在 Odoo 10 中继承 POS Javascript 函数

vb.net - 在 vb.Net 中实现继承的泛型接口(interface)

javascript - 从 jquery 中的事件中获取 elementId

javascript - Photoswipe - 没有画廊 View - 没有导航按钮

java - 如何将 swing JTextField 组件转换为扩展它的类型的对象

javascript - JavaScript 中 `new Date` 的奇怪行为

php - 如何将 $_POST 信息发送到此页面而不通过提交表单访问该页面?