https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/watchdeveloper.mozilla.org
本日はまりました。
ものすごく端的に書くと、
var obj = {}; if (!obj.watch) { // FF以外はfalseになる obj.watch = []; } else { obj.watch.push("hoge"); }
という感じでobjectにwatchを持っていなければ配列をつくり、持っていればpushするという処理を書いてしまい、Firefoxでのみエラーを吐くというコードができあがりました。
普通であればこんなコードは書かないのですが、EventDispatcherに"watch"というイベントを渡した結果このような処理ができあがってしまったため、気づきませんでした。
とりあえずイベント名を_watchに変更して事なきを得ましたが、本来であれば、
var obj = {}; if (typeof obj.watch !== "array") { obj.watch = []; } else { obj.watch.push("hoge"); }
的な感じの処理にするべきだったのかもしれません。