__proto__
является будет стандартизован в ES6. В настоящее время он находится в Appendix B of the ES6 draft, что на практике означает, что если он реализован, он должен иметь следующую семантику.
__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__
доступен во всех современных браузерах, including Internet Explorer 11.
Надеюсь, это правда. Знаете ли вы, что ES6 позволит эффективно извлекать данные из массива? –
__proto__ не находится на стандартном треке - вместо этого одобрен ES6 Object.setPrototypeOf для лучшей поддержки https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/proto –
Да ES6 будет поддерживать subclassing, встроенный в родные классы, такие как Array. –