¿Qué navegadores web usan el __proto__
? Mozilla states que:JavaScript y __proto__: ¿qué navegadores lo usan?
Tenga en cuenta que
__proto__
pueden no estar disponibles en versiones de JavaScript distinto de aquel en Mozilla.
¿Qué navegadores web usan el __proto__
? Mozilla states que:JavaScript y __proto__: ¿qué navegadores lo usan?
Tenga en cuenta que
__proto__
pueden no estar disponibles en versiones de JavaScript distinto de aquel en Mozilla.
Haga clic here por su respuesta.
detalles
La forma más general sería probar esta página en diferentes navegadores:
<html>
<head>
<script type="text/javascript">
function a() {}
if ((new a).__proto__ === a.prototype)
alert('supported');
</script>
</head>
</html>
Se avisa si un navegador compatible con __proto__
. Lo he enviado al browsershots.org, que creará capturas de pantalla de la página en muchos navegadores diferentes. Por lo tanto, debería ver, mediante el mensaje de alerta, qué navegador lo admite.
El final de la frase que has publicado es See below for workarounds.
, donde hay una discusión sobre un método alternativo que utiliza 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 sé, pero quiero saber qué navegadores web admiten '__proto__'. Dependiendo de la respuesta, es posible que ni siquiera necesite ese tipo de funcionalidad. – Tower
No entiendo por qué copiaría propiedades de un objeto a otro ... Esto frustra el propósito de la poderosa herencia prototípica incorporada en JS. – Marius
El Browser Security Handbook tiene una tabla que muestra qué exploradores exponer __proto__
.
En la actualidad, los navegadores son:
Los excluidos:
Esto no es una respuesta directa a la pregunta pero puede ayudar a aquellos que quieran conocer el prototipo de la instancia del objeto (esto es para lo que a menudo se usa __proto__
). Todos los navegadores modernos (incluido IE9) admiten getPrototypeOf()
que se pueden usar para determinar el prototipo del objeto. La ironía del destino es que algunos navegadores reales como IE7 e IE8 que no son compatibles con Object.getPrototypeOf(obj)
tampoco son compatibles con obj.__proto__
. Para esos navegadores, puede usar obj.constructor.prototype
. Sin embargo, es un poco peligroso porque esta propiedad se puede redefinir.
Puede adjuntar '__proto__' en los puntos atrás' \ '' para el formateo. –
El formateo de StackOverflow solo apesta si no se toma el tiempo para entender cómo funciona. – deceze
Sin tecla de retroceso en los teclados azerty FWIW –