[javascript] proxy


proxy


中間切り取り対象の変化または近接は、getまたはsetで追加作業を行うことができる.
const myObj = {name : 'nsunny'};
const proxy = new Proxy (myObj, {
  get : function(target, property, receiver) {
    console.log('get value');
    return target[property];
  },
  set : function(target, property, value) {
    console.log('set value');
    target[property] = value;
  }
});
targetmyObjを表す.
proxy.name = "kimnsunny";
nameを変更すると、set関数が自動的に実行されます.
proxy.name;
呼び出しnameは、get関数を自動的に実行します.

エージェントの利用


objをproxyに非表示にしたり、proxyで値の変更回数を計算したりできます.
const proxy = new Proxy ({name : 'nsunny', changedValue : 0}, {
  get : function(target, property, receiver) {
    return (property in target) ? target[property] : "anonymous";
  },
  set : function(target, property, value) {
    console.log('set value');
    target['changedValue']++;
    target[property] = value;
  }
});
proxy.dkfjdafdaf;
targetが呼び出されていないpropertyが呼び出されると、"anonymous"が出力される.
proxy.name = 'kimnsunny';
nameの値を変更するたびに、changedValueの値は1増加します.