みかづきブログ その3

本ブログは更新を終了しました。通算140万ユーザーの方に観覧頂くことができました。長い間、ありがとうございました。

👆

引越し先はこちらです!

FirefoxのObject.prototype.watch()にはまりました。

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");
}

的な感じの処理にするべきだったのかもしれません。