内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用
在JS中是否可能有一个事件在某个变量的值发生变化时触发?
我知道这是一个旧线程,但是现在可以使用访问器(getter和setter)实现这种效果:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects#Defining_getters_and_setters
你可以定义这样的对象,其中aInternal
表示字段a
:
x = { aInternal: 10, aListener: function(val) {}, set a(val) { this.aInternal = val; this.aListener(val); }, get a() { return this.aInternal; }, registerListener: function(listener) { this.aListener = listener; } }
然后,你可以使用以下方法注册侦听器:
x.registerListener(function(val) { alert("Someone changed the value of x.a to " + val); });
因此,每当任何事情发生变化时x.a
侦听器函数将被触发。运行以下行将弹出警报:
x.a = 42;
你也可以使用一个侦听器数组,而不是单个侦听器插槽,但我想给出一个最简单的示例。