快来围观一下JavaScript的Proxy

【快来围观一下JavaScript的Proxy】的确写Proxy文章很多,那么今天我也不凑字数了,炒两个栗子吧。
一、虚拟属性
const person = {
name: 'xiaoyun',
province: '江苏省',
city: '南京市'
}
对于上述对象,我们可能需要地址信息(由省市拼接而成),在此之前我们可能会采取下列方式:
直接在person对象上声明一个address属性;
当用到address信息时,再通过person拼接。
第一个方法的主要弊端是污染了原有的对象,而第二种方法就很不灵活。现在我们可以通过Proxy实现比较好的效果:
const enhancePerson = new Proxy(person, {
get (target, name) {
switch (name) {
case 'address':
return `${target['province']}-${target['city']}`
default:
return target[name]
}
}
})
enhancePerson.address // 江苏省-南京市
通过这种方式我们就可以实现虚拟属性了,因为它不会被遍历出来:
Object.keys(enhancePerson) // [ 'name', 'province', 'city' ]
这里还有一个我觉得比较容易忽略的点:


>>>阅读全文

    推荐阅读