Setter JavaScript 中的任何内容

Setter for anything in JavaScript

我有一个对象,我们称它为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 有办法做到这一点吗?谢谢

您可以创建一个 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