我正在寻找两个功能:
var MyObject = new Object();
MyObject.MyProperty = 1;
function ListenToChange() {
here I want to listen to changes in MyProperty1 and do something when it changes
}
function ThrowEvent () {
here I change the value of MyProperty every 5 seconds
setTimeOut('ThrowEvent', 5000);
}
我查看了addEventListener属性,但看起来它适用于DOM对象。我想过使用ThrowEvent函数来改变隐藏div的值并用$('#HiddenDiv')来监听隐藏值的变化.change()但是我想知道是否有更好的方法可以做它与addEventListener。
感谢您的帮助。
答案 0 :(得分:1)
这里有一个我想出的例子。它并不像约翰的例子那样富有魅力,但它完成了工作。改进的建议非常受欢迎。
var MyObject = new Object();
MyObject.MyProperty = 1;
MyObject.MyProperty_Set = function(val) {
this.MyProperty = val;
ListenToChange();
}
function ListenToChange() {
console.log('My Property was changed');
}
MyObject.MyProperty_Set(2);
答案 1 :(得分:1)
我可以从你的例子中推断出你正在使用jQuery;您可以在更改属性值时随时触发自定义事件:
var my_obj = {my_prop: 1}
function ListenToChange(event, newval) {
console.log('my_prop is now' + newval)
}
$.bind("propchange:my_prop", ListenToChange)
function ThrowEvent () {
$.trigger('propchange:my_prop', my_obj.my_prop)
setTimeOut('ThrowEvent', 5000);
}
答案 2 :(得分:0)
您似乎在ES5 set和get之后,但是它们无法在ECMAScript Ed 3环境中运行,您需要为此编写自己的getter和setter函数。
如果您想监听DOM的更改,则W3C DOM 2 Events规范包含mutation events,但我认为它并未广泛实施。有一个level 3 working draft弃用了许多2级功能。