proxy

proxy的作用

    1、代理
    2、解决跨域

proxy里的两个参数

   第一个参数:要代理的对象
   第二个参数:是一个对象 里面有一些方法  

实例:

 var bar = {
        beauty: '50人',
        barMaid: '10人',
        wine: 'many',
        position: '市中心',
        vip: 100
    }
    var chainStore = new Proxy(bar, {
        get(target, pro) {
            if (pro == 'beauty') {
                return '50人都是美女'
            }
            return target[pro]
        },
        set(target, pro, value) {
            target[pro] = value
        },
        // ownKeys拦截操作,拦截过滤Object.Keys()对对象的属性遍历。
        ownKeys() {
            return ['beauty', 'vip']
        },
        // has( )拦截操作:拦截key in object的操作,结果会返回一个布尔值。
        has(target, pro) {
            if (target[pro] == undefined) {
                return false
            }
            return true
        }
    })
    console.log(chainStore.beauty);
    chainStore.vip = 200
    console.log(chainStore.vip);
    console.log(Object.keys(chainStore));
    console.log('beauty' in chainStore);
    console.log('beauty_2' in chainStore);

如果创建了代理之后又想取消代理的话,我们可以用Proxy.revocable( )(可废止的,可撤回的;) 函数来实现,它会返回一个对象,对象中含有一个proxy属性, 它就是Proxy的代理实例对象;还有一个revoke属性,它是一个方法,用于取消代理。

var bar_1 = Proxy.revocable(bar, {
        get(target, pro) {
            return target[pro]
        }
    })
    console.log(bar_1.proxy.beauty);
    bar_1.revoke()
    console.log(bar_1.proxy.beauty);//Cannot perform 'get' on a proxy that has been revoked

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值