用JavaScript设置任何内容

时间:2019-03-16 09:46:20

标签: javascript setter

我有一个对象,我们称之为obj,它看起来像这样:

const obj = {
  key: "value"
}

现在,我想在设置属性时执行某些操作。我听说过二传手 我可以通过以下方式使用:

const obj = {
   set key(e) {
     console.log("Property key has been set!")
   }
}

但是我想对任何属性执行此操作...就像不仅仅用于键,它适用于任何事物,例如:

obj.SomeKey = "value"

应该登录"Property key has been set!" 对于任何财产来说都是一样的... JavaScript中有没有办法做到这一点?谢谢

1 个答案:

答案 0 :(得分:1)

您可以创建一个ES6 Proxy,它允许您像这样修改set方法:

const obj = {
  key: "value"
};

const objProxy = new Proxy(obj, {
  set: (obj, prop, v) => {
    obj[prop] = v;
    console.log("do something");
  }
});

objProxy.name = "foo";
console.log(objProxy); // Proxy now has name attribute
console.log(obj); // And so does the original object