是否可以在Javascript对象上定义“全局” getter / setter方法,以便在获取/设置任何属性时都将调用它?

时间:2019-07-09 10:00:34

标签: javascript

假设我们有一个对象:

const obj = {
  foo: bar,
  boop: "beep",
}

现在,我想添加一些在此对象中设置属性(实际上也可以得到)时任何发生的功能。让我们保持简单,说添加的功能只是console.log("a set/get action was just triggered on obj!")

我该如何实现?

高级扩展程序:

命名设置的属性和设置的

为清楚起见,一些示例行为:

// simple:
obj.foo = "not bar anymore!";
// console output: a set/get action was just triggered on obj!

obj.rand = "a randomly added prop here";
// console output: a set/get action was just triggered on obj!


// advanced:
obj.boop = "burp";
// console output: a set/get action was just trigged on obj with prop: "boop", value: "burp".
obj.newRand = "a new randomly added prop here";
// console output: a set/get action was just trigged on obj with prop: "newRand", value: "a new randomly added prop here";

奖金:

欢迎使用其他任何方法来解决此问题。

1 个答案:

答案 0 :(得分:7)

改为使用带有{getter / setter陷阱”的Proxy对象。

通过Proxy对象中的陷阱,您可以在自定义功能中插入对象方法,同时在过程结束时返回实际的对象数据。

代码示例:

euler_cfg