侦听器在Javascript对象中更改属性值
作者:互联网
通过Javascript文档,我发现Javascript对象上的以下两个函数看起来很有趣:
.watch – 为属性分配值并在发生时运行函数的监视.
.unwatch – 使用watch方法移除watchpoint集.
样品用法:
o = { p: 1 };
o.watch("p", function (id,oldval,newval) {
console.log("o." + id + " changed from " + oldval + " to " + newval)
return newval;
});
每当我们更改“p”的属性值时,此函数都会被触发.
o.p = 2; //logs: "o.p changed from 1 to 2"
我在过去几年从事Javascript工作,从未使用过这些功能.
有人可以抛出一些好的用例,这些功能会派上用场吗?
解决方法:
真正设计的手表是属性值的验证.例如,您可以验证某些内容是否为整数:
obj.watch('count', function(id, oldval, newval) {
var val = parseInt(newval, 10);
if(isNaN(val)) return oldval;
return val;
});
您可以使用它来验证字符串长度:
obj.watch('name', function(id, oldval, newval) {
return newval.substr(0, 20);
});
但是,这些仅在最新版本的SpiderMonkey javascript引擎中可用.如果您使用的是Jaxer或嵌入SpiderMonkey引擎,但在您的浏览器中尚未实际可用(除非您使用的是FF3),这很棒.
标签:javascript,browser,dom-events 来源: https://codeday.me/bug/20190918/1811255.html