2010-05-27 10 views
43

Quelqu'un peut-il me dire depuis quelle version ECMA l'opérateur IN est disponible et quels navigateurs (versions) le supportent?Javascript dans la compatibilité opérateur

Explication:

L'IN-opérateur peut être utilisé comme suit:

var myObject = { 
    Firstname: 'Foo', 
    Lastname: 'Bar' 
}; 

if('Lastname' in myObject){ 
    // Lastname is an attribute of myObject 
} 

Répondre

52

Il est défini dans ECMAScript 3rd edition. Il est disponible dans IE 5.5+ et toutes les versions en cours d'utilisation de Firefox, Chrome, Opera et Safari.

Vous pouvez l'utiliser en toute sécurité en sachant que cela fonctionnera.

Vous devez faire preuve de prudence lorsque vous l'utilisez pour vérifier le support d'événement. Toutes les implémentations, à l'exception des anciennes versions de Firefox, prennent en charge "eventname" in element en tant que test pour les événements DOM.

"onclick" in document.body; // -> false in old Fx, true in others 
document.body.setAttribute("onclick", ""); 
typeof(document.body.onclick == "function"); // -> true in Fx 
+2

C'est seulement dans IE 5.5+; IE 5.0 était le «navigateur de problème» pour «in», bien que, évidemment, cette inquiétude est révolue depuis longtemps. – bobince

+1

FWIW Je ne pouvais pas le voir dans le 2ème ed @ http://www.ecma-international.org/publications/standards/Ecma-262-arch.htm –

+1

@Nick: il est certainement dans 3.0, même si IE didn ne le soutiendrons pas au moment de la publication. ECMAScript 3.1 était le nom de développement pour ce qui est devenu la cinquième édition. – bobince

2

Selon MDC, il est implemented in JavaScript 1.4.

Selon Wikipedia:

  • Netscape Navigator 6.0
  • Firefox 1.0+
  • IE 5.5+
  • Opera 6.0+
  • Safari 3.0+
  • Chrome 1.0+

Donc je pense que vous êtes probablement OK :)

+0

parce que je peux faire 'undefined =' défini! '; 'Plus tôt dans le code, ce qui est * évidemment * bénéfique. – Eric

+0

@jAndy, ok, je l'ai édité. – Skilldrick

+1

Vraiment, vous auriez dû mettre cela comme une autre réponse, car maintenant nos commentaires n'ont aucun sens. – Eric