ES6-Proxy 拦截器

<!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>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容