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

概念


你还记不记得,再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赋值的时候,在那个对象种,正好监听的这个赋值,那就会触发这个行为。

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

推荐阅读更多精彩内容