为什么Google Chrome仍然支持__proto__?

问题描述:

__proto__已弃用。为什么Chrome浏览器等大浏览器仍在使用它?有没有计划转储它?为什么Google Chrome仍然支持__proto__?

+0

可能是出于兼容性原因。 – SLaks

+0

我个人尝试在其位置使用Object.getPrototypeOf()来获取。不幸的是,目前没有像'__proto__'提供的设置方式。 – user113716

+1

不支持'getPrototypeOf'的浏览器不支持它的浏览器可能是:function(obj){return obj .__ proto__ || obj.constructor.prototype; };'。不完美,但应涵盖大多数情况。 – user113716

在语言/框架中最难的事情之一就是删除不推荐的功能。世界上仍然有大量的代码取决于这个特性。删除它打破网站。 Chrome显然已经考虑了维护成本与去除和选择维护的痛苦/成本。

+6

Chrome支持'document.all'!谈论一个弃用的功能:) – epascarello

__proto__不仅被弃用,它实际上从来不是标准的一部分。从Chrome中删除该功能意味着某些页面将不再在Chrome中运行,并且没有理由打破这些页面。

该功能作为'getPrototypeOf'函数添加到JavaScript(ECAMScript 5)中,新的JavaScript程序应该使用该功能。

A proto伪属性已包含在ECMAScript草案的§B.3.1中。 6规范(注意规范编码了实现中已有的内容以及目前可能依赖的网页)。

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/proto