【发布时间】:2019-03-05 11:20:59
【问题描述】:
我是Javascript 的初学者,正在学习其中的Object Oriented 和prototyping。
据我所知,Object 是一个函数,是由 Function 创建的,因为Object.__proto__ === Function.prototype 但是通过网上的各种图表,我对 Function.prototype.__proto__ === Object.prototype 的原理感到很困惑。
Function.prototype.__proto__ 是什么意思?
这不是语言所有者开发的东西吗,因为 Function 是一切都来自的第一件事。
那是什么意思呢?我缺少一些重要的事实吗?我查看了其他 StackOverflow 答案,但找不到任何相关内容。
【问题讨论】:
-
proto 总是指对象的超类型,所以在我们的例子中,如果它后缀为 Function.prototype 将类似于 Object.prototype,因为 Object 是函数的超类型
-
@BenFortune 请理解我的问题。通过查看您发布的问题图表,我产生了疑问。它是如何复制的?
-
__proto__是一种已弃用的访问对象原型的方法(不是原型属性,而是内部[[Prototype]]插槽)。现代方式是Reflect.getPropotypeOf。Function.prototype是Object的实例,继承自Object.prototype。因此,您添加的所有内容Object.prototype.test = 'test'; console.log((function(){}).test)都会被继承。
标签: javascript function object prototype