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

公開日: | カテゴリー: JavaScript

概要

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

参考資料