JS __proto__存在的意义?
JavaScript 的作者Brendan Eich为什么要再给对象弄个__proto__,来引用构造函数的prototype,而不是直接让对象也拥有prototype属性呢?
请不要回答“这你得问Brendan Eich”此类的话
希望得到富有逻辑性的回答
可以从“这样”做的意义在于哪、或者“不是直接让对象也拥有prototype属性”的好处在于哪来讲,谢谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
问题并不成立。
这玩意儿不是艾奇设计的,最早的 JS 版本里根本没这玩意儿。首次引入是 2006 年的 Firefox 2.0 版本,随后是 2010 年的 Chrome 4.0 才跟进,IE 直到 IE11 才正式支持。
但在 2015 年的 ES6(ES2015) 之前,这个特性在三家浏览器上是各自实现的,没有标准,所以表现上有一些差别。借着 ES6 引入
Reflect
、class
、super
等跟原型有关的特性时顺势就制订规范了,但随后没多久就被标记为废弃特性,现在已不推荐使用。不过好歹是支持 ES6 的浏览器上表现一致了。也就是说,1995~2006 年之间根本没这玩意儿,2006~2015 年之间一直是私有属性、各家浏览器表现不一致,2015 年形成标准、随后又被宣布废弃。
另外,最早 Firefox 引入
__proto__
的目的是为了方便开发者继承 JS 的内置类型,而不是你所说的为了访问原型链属性。(为什么方便你可以试试看在 ES5 之前你会如何实现一个自定义类型,继承自 JS 内置的Array
?)