__proto__
è sarà standardizzato in ES6. È attualmente in Appendix B of the ES6 draft che in pratica significa che se è implementato deve avere la seguente semantica.
__proto__
è disponibile come accessorio su Object.prototype
, il che significa che tutti gli oggetti possono leggerlo e scriverlo per impostazione predefinita. Tuttavia, può essere rimosso da Object.prototype
(utilizzando delete
). Una volta cancellato lo __proto__
funzionerà come una normale proprietà dei dati senza effetti collaterali sull'impostazione.
__proto__
è anche una forma sintattica speciale in oggetti letterali. Funzionerà per impostare [[Prototipo]] anche se è stato cancellato Object.prototype.__proto__
.
var p = {a: 1};
var o = {
__proto__: p,
b: 2
}
ES6 introduce anche Object.setPrototypeOf
(non in appendice). È preferibile impostare __proto__
.
__proto__
è disponibile in tutti i browser moderni, including Internet Explorer 11.
fonte
2012-08-10 21:07:47
Spero che sia vero. Sai se ES6 permetterà di derivare in modo efficiente dalla matrice? –
__proto__ non è su una traccia standard - invece ES6 ha approvato Object.setPrototypeOf per un supporto migliore https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/proto –
Sì ES6 supporterà sottoclassi costruite in classi native come Array. –