Opera zachowuje się zgodnie ze specyfikacją języka JavaScript. Słowa zastrzeżone, takie jak do
, NIE MOGĄ być użyte jako nazwy zmiennych lub parametrów, a także jako nazwy własności w notacji kropkowej, czyli np. obj.do
jest nielegalne.
Niestety, jest to błąd projektowy języka.
Lista słów zastrzeżonych jest długa. Tak naprawdę nie powinno być problemu z używaniem ich jako nazw własności obiektów. Istnieją parsery, które pozwalają nawet nadawać zmiennym nazwy takie jak do
-- w jednej funkcji należy tylko wybrać, czy używamy danego słowa zastrzeżonego jako słowa kluczowego (czyli np. do
jako początku pętli do-while
), czy jako nazwy zmiennej (czyli np. var do;
). Normalne przeglądarki może nie pozwalają aż na takie dziwolągi, ale -- jak widzisz -- pozwalają na używanie słów zastrzeżonych jako nazw własności. Opera nie pozwala, ale to nie znaczy, że Opera jest jakaś be -- stosuje się po prostu do specyfikacji języka.
Rozwiązanie w przypadku nazw własności jest akurat dość proste: należy użyć cudzysłowów. Czyli nie { do: cośtam }
tylko { "do": cośtam}
. Choć lepszym rozwiązaniem byłaby IMO zmiana nazwy zmiennej. U Ciebie np. mogłaby to być doValue
.
Oczywiście, fakt, że wg specyfikacji jQuery ten kod jest poprawny nie ma najmniejszego znaczenia. Specyfikacja jQuery definiuje jQuery, czyli bibliotekę działającą w obrębie języka JavaScript. Specyfikacja jQuery w żadnym razie nie może definiować samego JavaScriptu; to biblioteka jQuery powinna stosować się co specyfikacji JavaScriptu jeśli ma działać. No i się stosuje, choć być może niektóre przykłady ze specyfikacji nie.
RFabianski napisał(a)
po prostu wsadz do w nawiasy
Hm? Jak? Nie widzę jak nawiasy mogłyby tu pomóc. Cudzysłowy -- to owszem.