代理场景
假定有 一个客户 customer
和一个 代理商 agency
代理商必然为了攒钱要把价格抬高
所以代理的价格是客户的 1.2倍
判断属性
这里涉及到对属性字段的判断
get(target,key){
// 这里是判断是什么属性
// key 是属性的字符串
}
代理的逻辑
let agency = new Proxy(customer,{
get(target,key){
if(key === 'price'){
return (target[key])* 1.2
// 这里target就是customer的替身,或者说target指向customer
// target[key]配合上面的if判断属性,就是等于customer['price'] 或者customer.price
}else{
return target[key]
// 如果不是price属性就正常返回原来的数值
}
}
})
完整的代码
let customer = {
name: 'john',
price: 5000,
}
let agency = new Proxy(customer,{
get(target,key){
if(key === 'price'){
return (target[key])* 1.2
}else{
return target[key]
}
}
})
console.log(agency.price,agency.name)
输出结果
6000 'john'