Поведение перед стандартизацией `__proto__` - PullRequest
2 голосов
/ 02 октября 2019

Стандарт 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 или эквивалентный был доступен).

...