美文网首页
es6 Proxy、Reflect的简易应用

es6 Proxy、Reflect的简易应用

作者: 设置一个看起来合理的昵称 | 来源:发表于2017-12-23 18:05 被阅读0次
{
    function validation(target,validationExt){
        return new Proxy(target,{
            _validationExt:validationExt,
            set(target,key,value){
                // 验证是否存在key
                if(target.hasOwnProperty(key)){
                    let va = this._validationExt[key];// 验证value是否符合规则
                    if (!!va(value)) {
                        // 设置被代理对象属性
                        return Reflect.set(target,key,value);
                    }else{
                        throw Error(`不能设置${key}到${value}`);
                    }
                }else{
                    throw Error(`${key}不存在`);
                }
            },
        });
    }

    // 验证规则
    const validationExt = {
        name(val){
            return typeof val==='string'
        },
        age(val){
            return typeof val === 'number' && val>18
        },
    }
    
    class Person{
        constructor(name,age){
            this.name = name;
            this.age = age;
            return validation(this,validationExt);
        }
    }

    let person1 = new Person('wuding',30);
    console.log(person1);
    // 下面赋值报错
    // person1.name = 123;
    // person1.age = 17;
    // 下面赋值正常
    person1.name = 'Han';
    person1.age = 19;
    console.log(person1);
}

相关文章

  • es6 Proxy、Reflect的简易应用

  • ES6——Reflect 与 Proxy

    ES6 之 Proxy 介绍深入实践 ES6 Proxy & Reflect 1.Proxy Proxy 可以对目...

  • ES6中的Reflect与Proxy(个人笔记)

    概述 Proxy 与 Reflect 是 ES6 为了操作对象引入的 API 。 Proxy:Proxy 可以对目...

  • ES6标准入门读书笔记12(Reflect)未完待续

    概述 § ⇧ Reflect对象与Proxy对象一样,也是 ES6 为了操作对象而提供的新 API。Reflect...

  • Reflect

    概述 § ⇧ Reflect对象与Proxy对象一样,也是 ES6 为了操作对象而提供的新 API。Reflect...

  • ES6 Proxy和Reflect

    Proxy 与 Reflect 是 ES6 为了操作对象引入的 API 。Proxy 可以对目标对象的读取、函数调...

  • Reflect 对象

    Reflect 对象与 Proxy 对象一样,也是 ES6 为了操作对象而提供的新的API。Reflect 对象的...

  • ES6 Reflect

    一、概述 Reflect对象与Proxy对象一样,也是 ES6 为了操作对象而提供的新 API。Reflect对象...

  • Reflect对象

    Reflect对象与Proxy对象一样,也是 ES6 为了操作对象而提供的新 API。Reflect对象的设计目的...

  • Reflect用法详解

    概述 Reflect对象与Proxy对象一样,也是 ES6 为了操作对象而提供的新 API。Reflect对象的设...

网友评论

      本文标题:es6 Proxy、Reflect的简易应用

      本文链接:https://www.haomeiwen.com/subject/oopqgxtx.html