Стандарт ECMA-262, поскольку в его 6-м издании __proto__
указан как дескриптор свойства, определенный в Object.prototype
( ECMA-262, 6-е издание. § B.2.2.1 ). Он также определяет специальное поведение для __proto__
в качестве ключа в литералах объекта ( ECMA-262 6-е издание. § B.3.1 ), которые обычные пользовательские дескрипторы свойств в Object.prototype
не могут реплицировать.
До того, как оно появилось в формальном стандарте ECMAScript, я помню, что эта функция была де-факто стандартом, созданным в движке JavaScript Mozilla, позже реализованном и в Chromium.
В этих реализациях до ECMA былакогда-либо случалось, что __proto__
не был реализован через Object.prototype
вообще? В частности, мне интересно, существует ли реализация, где этот код:
var x = Object.create(null);
x.__proto__ = { a: true };
console.info(x.a);
выведет true
на консоль (при условии, что Object.create
или эквивалентный был доступен).