javascript - JavaScript 中任何内容的 Setter

标签 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!" 对于任何属性(property)来说都是一样的...... 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

关于javascript - JavaScript 中任何内容的 Setter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55195401/

相关文章:

arrays - swift 语法 : index of array element accessed in setter?

javascript - 使用 webpack url-loader 加载 svg 返回 js 文件

java - 如何在 obj 上使用 set 方法。引用更改值

java - 设置对象的值

javascript - 如何将 lodash 与 ejs 一起使用?

javascript - 为什么惰性 getter 使用原型(prototype)而不是类?

java - getter 和 setter 是糟糕的设计吗?看到矛盾的建议

javascript - 如何从对象属性数组中删除 null

javascript - php select onchange 似乎不起作用

javascript - Canvas 确定平移边界,独立于屏幕分辨率和 Canvas 调整大小