2010-05-27 22 views
43

Czy ktoś może mi powiedzieć, od której wersji ECMA operator IN jest dostępny i które przeglądarki (wersje) go obsługują?Zgodność z operatorem JavaScript IN

Objaśnienie:

IN-operator może być stosowane jak następuje:

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

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

Odpowiedz

52

Jest zdefiniowany w ECMAScript 3rd edition. Jest dostępny w IE 5.5+ i wszystkich używanych wersjach Firefox, Chrome, Opera i Safari.

Możesz go używać bezpiecznie wiedząc, że zadziała.

Należy zachować ostrożność podczas używania go do sprawdzania obsługi zdarzeń. Wszystkie implementacje oprócz starszych wersji Firefoksa obsługują "eventname" in element jako test zdarzeń 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

Jest tylko w IE 5.5+; IE 5.0 był "przeglądarką problemową" dla "w", choć oczywiście martwienie się już dawno minęło. – bobince

+1

FWIW Nie widziałem tego na 2. ed @ http://www.ecma-international.org/publications/standards/Ecma-262-arch.htm –

+1

@Nick: na pewno jest w wersji 3.0, mimo że IE didn wesprzeć go w momencie publikacji. ECMAScript 3.1 był nazwą rozwojową tego, co stało się Piątą Edycją. – bobince

2

Według MDC, to implemented in JavaScript 1.4.

Według Wikipedia:

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

Więc myślę, że prawdopodobnie jesteś OK :)

+0

ponieważ mogę zrobić "undefined =" zdefiniowany! ";' Wcześniej w kodzie, co jest * oczywiście * korzystne. – Eric

+0

@jAyy, ok, zmieniłem to. – Skilldrick

+1

Naprawdę, powinieneś podać to jako inną odpowiedź, ponieważ teraz nasze komentarze nie mają sensu. – Eric