(__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.constructor
是Object
.
事实上,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/