美文网首页前端开发es6入门基础
ES6基础入门教程(十九)Object新方法—Reflect

ES6基础入门教程(十九)Object新方法—Reflect

作者: 党云龙 | 来源:发表于2019-11-15 17:39 被阅读0次

    概念


    你还记不记得,再es5里面有好多类似object.defineproperty或者object.keys这样的操作对象的方法。
    这几个方法,如果没获取到值,就会直接报错。
    你说对了,这个Reflect对象就是用来替代Object的,如果没有获取到值就会返回false。
    Reflect中的方法跟Proxy中的是一样的。因为他本身就是对象。。

    用法:


    理论上来说,任何操作对象的方式,例如说,读取值,设置key等等等,在Reflect对象上都存在,这个东西就是es6设置出来
    把以前那些混乱的操作方法都统一。

    let obj = {
        name:"objname",
        arr:[1,2,3,4],
        fun:()=>{
            console.log(123);
        }
    }
    console.log(Reflect.get(obj,"name"));
    

    设置也是一样的

    let obj = {
        name:"objname",
        arr:[1,2,3,4],
        fun:()=>{
            console.log(123);
        }
    }
    Reflect.set(obj, "name", "333");
    console.log(Reflect.get(obj,"name"));
    

    再来一个官方的稍微复杂一点的例子

    var myObject = {
      foo: 4,
      set bar(value) {
        return this.foo = value;
      },
    };
    var myReceiverObject = {
      foo: 0,
    };
    Reflect.set(myObject, 'bar', 1, myReceiverObject);
    myObject.foo // 4
    myReceiverObject.foo // 1
    

    如果你set赋值的时候,在那个对象种,正好监听的这个赋值,那就会触发这个行为。

    相关文章

      网友评论

        本文标题:ES6基础入门教程(十九)Object新方法—Reflect

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