<small id='TiRE9f'></small> <noframes id='kax3Jpozw'>

  • <tfoot id='hmOn9Q'></tfoot>

      <legend id='m9vJlq2S'><style id='lMprVc9z'><dir id='Xl3t8'><q id='baho9VNZ'></q></dir></style></legend>
      <i id='JtjKQfM'><tr id='tSnPl'><dt id='AUNxaB'><q id='W6aYeTiyx'><span id='roZdFCVWR'><b id='L3wqf'><form id='V0j6BIbW'><ins id='AamN1ngBIc'></ins><ul id='ZJO0FKCE'></ul><sub id='pwVQF'></sub></form><legend id='b6ieEYMy'></legend><bdo id='mfaVq'><pre id='Ql7Hq'><center id='YD58VmQn1'></center></pre></bdo></b><th id='TbZxQ6Wq5'></th></span></q></dt></tr></i><div id='H6YX'><tfoot id='1Olvw'></tfoot><dl id='OdjXxTW2Q'><fieldset id='GTm5Eu'></fieldset></dl></div>

          <bdo id='aDuZcU'></bdo><ul id='5U4FObkH'></ul>

          1. <li id='Uc5nOmFu'></li>
            登陆

            章鱼彩票 app-ES6新特性之Reflect

            admin 2019-09-06 174人围观 ,发现0个评论

            基本概念

            reflect是一个内置的方针,供给了阻拦JavaScript操作的办法(首要效果)。它将部分归于言语内部的办法转移到reflect上去,比方defineProperty。优化了一部分函数的回来成果,它的风格上倾向于函数式编程,保存方针的默许行为(Proxy),没有结构函数,一切的特点办法都是静态的,相似Math。reflec章鱼彩票 app-ES6新特性之Reflectt和Proxy是一一对应的,一切Proxy能够阻拦的特点,reflect供给一个默许。。

            静态办法

            • get ,取值操作, 不存在回来undefined
             Reflect.get(target, propertyKey章鱼彩票 app-ES6新特性之Reflect[, receiver]);
            • 内部this绑定receiver
             var object1 = {
            a: 1,
            b: 2,
            get c() {
            return this.a + this.b;
            },
            };

            var object2 = {
            a: 4,
            b: 4,
            };

            Reflect.get(object1, 'c');
            // 3
            Reflect.get(object1, 'c', object2);
            // 8
            • set,赋值操作
             Reflect.set(target, propertyKey, value[, receiver]);
            • 同get相同,也是内部this绑定receiver。
             var object1 = {
            a: 1,
            set b(value) {
            return this.a = value;
            },
            };

            var object2 = {
            a: 0,
            };

            Reflect.set(object1, 'b', 2, object2);
            // true
            object1
            //{a:1}
            object2
            //{a:2}

            object1.foo
            // undeifined
            object2.foo;
            // undeifi章鱼彩票 app-ES6新特性之Reflectned
            • 与Proxy一起运用 , 传递receiver会触发defineProperty,触发defineProperty的条件是一定要先传递receiver。
             let object = {
            a: 1
            };

            let handler = {
            set(target, key, value, receiver) {
            console.log('set value', value);
            Reflect.set(target, key, value, receiver)
            },
            defineProperty(target, key, attribute) {
            console.log('defineProperty', attribute);
            Reflect.defineProperty(target, key, attribute);
            }
            };

            let obj = new Proxy(object, handler);

            obj.a = 2;
            // set value 2
            defineProperty {value: 2}
            2
            • has,方针是否包括某个特点,回来布尔值
             Reflect.has(target, propertyKey);
            var object = {
            a: 1,
            };

            Reflect.has(object, 'a');
            // true
            • deleteProperty,删去某个特点,回来布尔值
             Reflect.deleteProperty(target, propertyKey);
            var object = {
            a: 1,
            };

            Reflect.deleteProperty(object, 'a');
            // true
            • construct,new操作
             Reflect.construct(target, argumentsList[, newTarget]);
            function Teacher(name) {
            this.name = name;
            }

            const eric = Reflect.construct(Teacher, ['Eric']);
            // Teacher {name: "Eric"}
            • getPrototypeOf,读取proto特点
             Reflect.getPrototypeOf(target);
            function Teacher(name) {
            this.name = name;
            }
            const eric = Reflect.construct(Teacher, ['Eric']);

            Reflect.getPrototypeOf(eric) === Teacher.prototype;
            // true
            • setPrototypeOf , 设置方针方针原型 , 回来布尔值
             Reflect.setPrototypeOf(target, prototype);
            const object = {};
            Reflect.setPrototypeOf(object, Array.prototype);
            object.length;
            // 0
            • apply , 绑定this方针履行给定函数
             Reflect.apply(target, thisArgument, argumentsList);
            const list = [1, 2, 3, 4, 5, 6];
            const min = Reflect.apply(Math.min章鱼彩票 app-ES6新特性之Reflect, Math, list);
            • defineProperty , 方针界说特点
             Reflect.defineProperty(target,重名查询系统 propertyKey, attributes);
            let object = {};

            Reflect.defineProperty(object, 'name', {
            value: 'Eric'
            });
            // {name: "Eric"}
            • getOwnPropertyDescriptor , 获取指定特点的描绘方针
             Reflect.getOwnPropertyDescriptor(target, propertyKey);
            • isExtensible , 回来指定方针是否可扩展
             Reflect.isExtensible(target);
            • preventExtensions , 阻挠方针扩展
             Reflect.preventExtensions(target);
            var empty = {};
            Reflect.isExtensible(empty);
            /* true */

            Reflect.preventExtensions(empty);
            Reflect.isExtensible(empty);
            // false
            • ownKeys , 回来方针的一切特点(包括Symbol)
             Reflect.ownKeys(target);
            var object = {
            a: 1,
            b: 2,
            [Symbol.for('c')]: 3,
            [Symbol.for('d')]: 4,
            };

            Reflect.ownKeys(object);
            // ["a", "b", Symbol(c), Symbol(d)]
            请关注微信公众号
            微信二维码
            不容错过
            Powered By Z-BlogPHP