Причина этих разногласий между браузерами в вычислении оператора ||.
Выражение false || foo.bar в Опере возвращает значение Reference с базой foo и именем "bar", в остальных браузерах - функцию foo.bar. Поэтому при вызове результата этого выражения как функции в Опере значение foo передаётся в качестве аргумента this, а в других браузерах - глобальный объект (или undefined в строгом режиме). Та же особенность Оперы проявляется в следующем коде:
var a=1;
(0||a)=2; // во всех браузерах, кроме Оперы что-то типа ReferenceError: invalid assignment left-hand side
alert(a); // в Опере выдаёт 2