Javascriptでグローバル変数への値の代入を検知する

GetterとSetterを使う。JavascriptのバージョンはES2015。

windowオブジェクトにプロパティを追加

例として、xというグローバル変数の値を監視する。プロパティの追加はObject.definePropertyを使う。

Object.defineProperty(window,'x', {
    configurable: false,
    val: undefined,
    get: function () { return this.val; },
    set: function (x) {
        this.val = x;
        console.log( x+' was assined to x');
    },
});

getterを定義し忘れると、値を参照できなくなるので注意。
代入時に任意の処理を行いたいときは、console.log( x+’ was assigned to x’); 部分を書き換える。

処理

x = 1;
x = 2;

結果

1 was assigned to x
2 was assigned to x

Leave a Reply

Your email address will not be published. Required fields are marked *