Object.watch() が廃止予定となりました

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

概要

非標準の Object.prototype.watchunwatch メソッドは廃止予定となり、近い将来削除されることとなりました。Firefox 57 以降、他のどのブラウザーも対応していないこれらのメソッドに対する警告がコンソールに表示されます。標準の Proxy あるいは Reflect オブジェクトを代わりに使用してください。

以下の例は Object.prototype.watchProxy で単純に置き換えたものです。

const o = { a: 1 };

// 非推奨
o.watch('a', (prop, oldval, newval) => {
  console.log(`o.${prop} は ${oldval} から ${newval} へ変更されました`);
  return newval;
});

o.a = 2; // o.a は 1 から 2 へ変更されました

// 推奨
const p = new Proxy(o, {
  set: (obj, prop, newval) => {
    const oldval = obj[prop];
    obj[prop] = newval;
    console.log(`p.${prop} は ${oldval} から ${newval} へ変更されました`);
    return true;
  }
});

p.a = 3; // p.a は 2 から 3 へ変更されました

更新: これらのメソッドは Firefox 58 で削除されました。

参考資料