编程语言
首页 > 编程语言> > 侦听器在Javascript对象中更改属性值

侦听器在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