【发布时间】:2019-08-18 16:58:02
【问题描述】:
对于任何变量或其属性,有没有办法知道它的值何时被设置?
例如,假设我有:
let x = { 'a': 1, 'b': 2 };
// x.a's set operation is linked to a method
x.a = 3; // the method is automatically called
有没有一种方法可以在 a 的值更改时调用函数?很多代码会改变这个值;我不想到处添加方法调用。
我知道代理,但使用它们似乎需要一个单独的变量。意思是,x 不能是它自己的代理。
最好这种技术适用于原始和非原始。
【问题讨论】:
-
Is there a way I can call a function when a's value is changed?使用 setter 和 getter -
当然
x可以是代理....x = new Proxy(x, handler) -
@charlietfl - 这不会导致循环吗?处理程序将包含一个会触发自身的 set 方法。
-
处理程序不应该使用
x.任何东西,因为设置一个值会调用set: function(obj, prop, value) {...所以obj[prop] = value不会循环 :p 但@987654329 @不会很好 -
@Karric 基本示例工作正常jsfiddle.net/3pfyxu9j
标签: javascript proxy datatrigger