代理场景

假定有 一个客户 customer
和一个 代理商 agency
代理商必然为了攒钱要把价格抬高
所以代理的价格是客户的 1.2倍

判断属性

这里涉及到对属性字段的判断

  1. get(target,key){
  2. // 这里是判断是什么属性
  3. // key 是属性的字符串
  4. }

代理的逻辑

  1. let agency = new Proxy(customer,{
  2. get(target,key){
  3. if(key === 'price'){
  4. return (target[key])* 1.2
  5. // 这里target就是customer的替身,或者说target指向customer
  6. // target[key]配合上面的if判断属性,就是等于customer['price'] 或者customer.price
  7. }else{
  8. return target[key]
  9. // 如果不是price属性就正常返回原来的数值
  10. }
  11. }
  12. })

完整的代码

  1. let customer = {
  2. name: 'john',
  3. price: 5000,
  4. }
  5. let agency = new Proxy(customer,{
  6. get(target,key){
  7. if(key === 'price'){
  8. return (target[key])* 1.2
  9. }else{
  10. return target[key]
  11. }
  12. }
  13. })
  14. console.log(agency.price,agency.name)

输出结果

  1. 6000 'john'