JS __proto__存在的意义?

发布于 2022-09-12 23:36:31 字数 208 浏览 28 评论 0

JavaScript 的作者Brendan Eich为什么要再给对象弄个__proto__,来引用构造函数的prototype,而不是直接让对象也拥有prototype属性呢?

请不要回答“这你得问Brendan Eich”此类的话

希望得到富有逻辑性的回答

可以从“这样”做的意义在于哪、或者“不是直接让对象也拥有prototype属性”的好处在于哪来讲,谢谢

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

残龙傲雪 2022-09-19 23:36:31

问题并不成立。

这玩意儿不是艾奇设计的,最早的 JS 版本里根本没这玩意儿。首次引入是 2006 年的 Firefox 2.0 版本,随后是 2010 年的 Chrome 4.0 才跟进,IE 直到 IE11 才正式支持。

但在 2015 年的 ES6(ES2015) 之前,这个特性在三家浏览器上是各自实现的,没有标准,所以表现上有一些差别。借着 ES6 引入 Reflectclasssuper 等跟原型有关的特性时顺势就制订规范了,但随后没多久就被标记为废弃特性,现在已不推荐使用。不过好歹是支持 ES6 的浏览器上表现一致了。

也就是说,1995~2006 年之间根本没这玩意儿,2006~2015 年之间一直是私有属性、各家浏览器表现不一致,2015 年形成标准、随后又被宣布废弃。

另外,最早 Firefox 引入 __proto__ 的目的是为了方便开发者继承 JS 的内置类型,而不是你所说的为了访问原型链属性。(为什么方便你可以试试看在 ES5 之前你会如何实现一个自定义类型,继承自 JS 内置的 Array?)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文