ES6-Proxy 拦截器

2019-06-25  本文已影响0人  gitblong
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Proxy</title>
</head>
<body>
<script>

    //Proxy的使用方式
    let obj = new Proxy({}, {
        get(target,key,receiver){
            console.log("getting",target,key,receiver);
            return Reflect.get(target,key,receiver);
        },
        set: function (target,key,value,receiver) {
            console.log("setting",target,key,value,receiver);
            return Reflect.set(target, key, value, receiver);
        }
    });

    obj.count = 1;
    ++obj.count;
    console.log("???",obj.count);

    //Proxy实例可作为其他对象的原型对象
    let objPrototype = new Proxy({},{
        get:function (target, property) {
            return 35;
        }
    });
    let extendProxyObj = Object.create(objPrototype);
    let time = extendProxyObj.time;
    console.log(time);//35  因为对象上无初始值,所以使用原型链上提供的值
    extendProxyObj.time = 10;
    console.log(extendProxyObj.time,extendProxyObj);//10 {time: 10},该对象上有值了

</script>
</body>
</html>
上一篇下一篇

猜你喜欢

热点阅读