__proto__
будет стандартизирован в ES6.В настоящее время он находится в Приложении B к черновому варианту ES6 , что на практике означает, что для его реализации необходима следующая семантика.
__proto__
доступно как средство доступа к Object.prototype
, что означает, что все объекты могут читать и записывать его по умолчанию.Однако его можно удалить из Object.prototype
(используя delete
).После удаления __proto__
будет работать как обычное свойство данных без каких-либо побочных эффектов при настройке.
__proto__
также является специальной синтаксической формой в литералах объекта.Он будет работать для установки [[Prototype]], даже если Object.prototype.__proto__
был удален.
var p = {a: 1};
var o = {
__proto__: p,
b: 2
}
ES6 также вводит Object.setPrototypeOf
(не в приложении).Это предпочтительнее, чем настройка __proto__
.
__proto__
доступна во всех современных браузерах, , включая Internet Explorer 11 .