Quali browser Web utilizzano __proto__
? Mozilla states che:JavaScript e __proto__ - quali browser lo usano?
Nota che
__proto__
potrebbe non essere disponibile in versioni JavaScript diverse da quella in Mozilla.
Quali browser Web utilizzano __proto__
? Mozilla states che:JavaScript e __proto__ - quali browser lo usano?
Nota che
__proto__
potrebbe non essere disponibile in versioni JavaScript diverse da quella in Mozilla.
Clicca here per la risposta.
dettagli
Il modo più generale sarebbe quello di verificare questa pagina in diversi browser:
<html>
<head>
<script type="text/javascript">
function a() {}
if ((new a).__proto__ === a.prototype)
alert('supported');
</script>
</head>
</html>
Si avvisa se un browser supporta __proto__
. L'ho inviato a browsershots.org, che creerà screenshot della pagina in molti browser diversi. Quindi, dovresti vedere - tramite il messaggio di avviso - quale browser lo supporta.
La fine della frase che hai postato è See below for workarounds.
, dove c'è una discussione su un metodo alternativo che utilizza extends()
super.prototype
:
function extend(child, super){
for (var property in super.prototype) {
if (typeof child.prototype[property] == "undefined")
child.prototype[property] = super.prototype[property];
}
return child;
}
Lo so, ma voglio sapere quali browser supportano '__proto__'. A seconda della risposta, potrei anche non aver bisogno di quel tipo di funzionalità. – Tower
Non capisco perché copi le proprietà da un oggetto a un altro ... Questo vanifica lo scopo della potente eredità prototipale incorporata in JS. – Marius
Il Browser Security Handbook ha una tabella che mostra quali browser esporre __proto__
.
Attualmente, i browser sono:
Gli esclusi:
Questa non è una risposta diretta alla domanda, ma può essere utile per coloro che desiderano conoscere il prototipo dell'istanza dell'oggetto (questo è per quello che viene spesso utilizzato __proto__
). Tutti i browser moderni (incluso IE9) supportano getPrototypeOf()
che può essere utilizzato per determinare il prototipo dell'oggetto. L'ironia del destino è che alcuni browser ancora attuali come IE7 e IE8 che non supportano Object.getPrototypeOf(obj)
non supportano anche obj.__proto__
. Per quei browser è possibile utilizzare obj.constructor.prototype
. Tuttavia è un po 'pericoloso perché questa proprietà può essere ridefinita.
È possibile includere '__proto__' nei backtick' \ '' per la formattazione. –
La formattazione StackOverflow fa schifo solo se non si prende il tempo necessario per capire come funziona. – deceze
Nessun tasto inverso per le tastiere azerty FWIW –