Proxy

Proxy

在这里插入图片描述

如上图所示, 代理 有些类似于生活中的打官司时的律师, 律师作为中间人的角色, 有什么事情律师可以帮助完成, 不需要自己操作,律师就是起到一个代理的作用。
proxy 也是如此, 通过代理和外界进行信息的获取和传递

es6 推出 反射的一部分原因是 实现代理, 在某些情况下, 读取或者是设置 属性的值的时候通过代理来实现,所以就需要代理具有修改和读取的底层实现的能力, 所以代理提供了修改底层实现的方式 ,在修改底层实现时应该使用 API 的形式进行操作, 不能使用具有魔法的特殊符号的形式进行操作, 所以为了实现修改底层实现的方式,所以推出了 反射。

代理的使用很简单, new 一下就可以了:

// 代理一个目标对象
// target: 目标对象
// handler: 是一个普通对象, 其中可以重写底层实现 ==> 反射中的都可以
// 返回一个代理对象

new Proxy(target, handler)

示列:


const obj = {
    a: 1,
    b: 2
}

const proxy = new Proxy(obj, {
    // 修改
    // target 目标对象
    // propertyKey  要修改的键
    // value 要修改的值
    set(target, propertyKey, value) {
        // 赋值操作
        // target[propertyKey] = value
        // 通过反射 实现底层赋值操作 简单易懂
        Reflect.set(target, propertyKey, value);
    },
    get(target, propertyKey) {
        // 通过底层实现 改写 Reflect 里面的所有内容 如下所示:
        // 返回 存在的 值, 不存在返回 -1
        if (Reflect.has(target, propertyKey)) {
            return Reflect.get(target, propertyKey);
        } else {
            return -1;
        }
    },
    ......
})

proxy.a = 1;
console.log(proxy.a);
})

proxy.a = 1;
console.log(proxy.a);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值