如何经常检查变量值。例如:Javascript:如何不断监视变量值
if(variable == 'value'){
dosomething();
}
如果我不断地循环,或某事,这会的工作,但有一旦变量被设置为该值从而触发的有效途径?
如何经常检查变量值。例如:Javascript:如何不断监视变量值
if(variable == 'value'){
dosomething();
}
如果我不断地循环,或某事,这会的工作,但有一旦变量被设置为该值从而触发的有效途径?
使用的setInterval:
var key = ''
setInterval(function(){
if(key == 'value'){
dosomething();
}
}, 1000);
由于@Pekka评论,你可以有一个计时器不断查询变量。一个更好的解决方案,如果它是你改变变量的所有代码,不是直接设置变量,而是让所有setter调用一个函数。该函数然后可以设置变量并执行所需的任何其他处理。
function setValue(value) {
myVariable = value;
notifyWatchers();
}
手表被分配了值并且时发生运行的函数。
Object.watch() for all browsers?谈到在本机不支持它的浏览器上使用跨浏览器的方式做Object.watch
。
如果封装变量以便只能通过调用函数来设置该值,则可以检查该值。
function ValueWatcher(value) {
this.onBeforeSet = function(){}
this.onAfterSet = function(){}
this.setValue = function(newVal) {
this.onBeforeSet(value, newVal)
value = newVal;
this.onAfterSet(newVal)
}
this.getValue = function() {
return value;
}
}
var name = new ValueWatcher("chris");
wacthedName.onBeforeChange = function(currentVal, newVal) {
alert("about to change from" + currentVal + " to " + newVal);
}
name.setValue("Connor");
Object.defineProperty(Object.prototype, 'watch', {
value: function(prop, handler){
var setter = function(val){
return val = handler.call(this, val);
};
Object.defineProperty(this, prop, {
set: setter
});
}
});
如何使用:
var obj = {};
obj.watch('prop', function(value){
console.log('wow!',value);
});
obj.prop = 3;
具有定时功能。我认为没有其他办法 – 2011-01-08 01:50:49
有一些具体的实现方式。你有目标浏览器,还是尽可能多? – Hemlock 2011-01-08 01:54:38
我正在创建一个移动应用程序,所以我拥有所有最新的Javascript技术和最佳实践,因为JS已转换为Objective C.我没有设置函数的值,它是从第三方动态获取的用户点击一个按钮。我正在等待这个价值从默认变为其他任何东西。 – Connor 2011-01-08 02:05:10