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

Copyright © 2023 | 粤ICP备14006518号-4

Proudly powered by WordPress | Theme: Beast Blog by Crimson Themes.