使用JavaScript的Proxy监听对象属性变化并进行类public/private的访问控制
2015 年 8 月 12 日
监听属性变化
Proxy最简单的用法是可以监听对象属性的变化,比如下面的,当 obj 的 visit 属性改变时,自动更新页面上相应的 input元素值。
var obj = {}
var handler = {
set: function(target, name, value) {
//改变被代理对象的值,使之保持一致
target[name] = value
var input = document.querySelector(‘[name=’ + name + ‘]’)
if (input) {
input.value = value
}
}
}
var proxy = new Proxy(obj, handler);
proxy.visit = 100
setInterval(function() {
proxy.visit++
}, 1000)
Proxy还可以用来检查设置的值是否规范:
var obj = {} var handler = { set: function(target, name, value) { if (isNaN(Number(value))) { throw 'Type error' } target[name] = value } } var proxy = new Proxy(obj, handler);
执行结果:
proxy.visit = 'OurJS' > Uncaught Type error proxy.visit = 100 > 100
用Proxy实现private/ public