Quels navigateurs Web utilisent le __proto__
? Mozilla states que:JavaScript et __proto__ - quels navigateurs l'utilisent?
Notez que
__proto__
peuvent ne pas être disponibles dans les versions JavaScript autres que dans Mozilla.
Quels navigateurs Web utilisent le __proto__
? Mozilla states que:JavaScript et __proto__ - quels navigateurs l'utilisent?
Notez que
__proto__
peuvent ne pas être disponibles dans les versions JavaScript autres que dans Mozilla.
Cliquez here pour votre réponse.
Détails
La façon la plus générale serait de tester cette page dans différents navigateurs:
<html>
<head>
<script type="text/javascript">
function a() {}
if ((new a).__proto__ === a.prototype)
alert('supported');
</script>
</head>
</html>
Il avertit si un navigateur prend en charge __proto__
. Je l'ai soumis à browsershots.org, ce qui créera des captures d'écran de la page dans de nombreux navigateurs différents. Ainsi, vous devriez voir - au moyen du message d'alerte - quel navigateur le supporte.
La fin de la phrase que vous avez envoyé See below for workarounds.
, où il y a une discussion sur une autre méthode qui utilise 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;
}
Je sais, mais je veux savoir quels navigateurs Web supportent '__proto__'. Selon la réponse, je n'ai peut-être même pas besoin de ce genre de fonctionnalité. – Tower
Je ne comprends pas pourquoi vous copiez les propriétés d'un objet dans un autre ... Cela annule le but du puissant héritage prototypique intégré à JS. – Marius
Le Browser Security Handbook a un tableau indiquant les navigateurs exposer __proto__
.
Actuellement, ces navigateurs sont:
Les exclus:
Ceci n'est pas une réponse directe à la question mais cela peut aider pour ceux qui veulent connaître le prototype de l'instance d'objet (c'est pour quoi __proto__
est souvent utilisé). Tous les navigateurs modernes (y compris IE9) prend en charge getPrototypeOf()
qui peut être utilisé pour déterminer le prototype de l'objet. L'ironie du sort est que certains navigateurs encore réels comme IE7 et IE8 qui ne supportent pas Object.getPrototypeOf(obj)
ne supportent pas non plus obj.__proto__
. Pour ces navigateurs, vous pouvez utiliser obj.constructor.prototype
. Cependant c'est un peu dangereux car cette propriété peut être redéfinie.
Vous pouvez placer '__proto__' en arrière-plan' \ '' pour le formatage. –
La mise en forme de StackOverflow n'est nulle que si vous ne prenez pas le temps de comprendre comment cela fonctionne. – deceze
Aucune touche de retour arrière sur les claviers azerty FWIW –