__defineGetter__()__defineSetter__() をグローバルスコープで呼び出すことはできなくなりました

公開日:

カテゴリー: JavaScript

リリース: Firefox 48, Firefox 52 ESR

概要

従来、__defineGetter____defineSetter__ 両メソッドは、グローバルスコープでオブジェクト抜きに呼び出すことが可能でした。なぜなら、そうした場合はグローバルオブジェクトが自動的に使われていたからです。ECMAScript 2016 (ES7) 準拠の一環として、Firefox 48 以降はこの古い挙動に対応せず、代わりに TypeError を投げます。ここでの回避策は、this.__defineGetter__ あるいは this.__defineSetter__ のように、明示的に this キーワードを使うことです。

これをテストするには?

この変更は当プロジェクト提供の Firefox 開発者ツール拡張機能 に含まれている互換性チェッカーでテスト可能です。今すぐインストールしましょう!

参考資料