概念
你還記不記得锋华,再es5里面有好多類似object.defineproperty或者object.keys這樣的操作對(duì)象的方法。
這幾個(gè)方法恋日,如果沒獲取到值膀篮,就會(huì)直接報(bào)錯(cuò)。
你說對(duì)了岂膳,這個(gè)Reflect對(duì)象就是用來替代Object的誓竿,如果沒有獲取到值就會(huì)返回false。
Reflect中的方法跟Proxy中的是一樣的谈截。因?yàn)樗旧砭褪菍?duì)象筷屡。涧偷。
用法:
理論上來說,任何操作對(duì)象的方式毙死,例如說燎潮,讀取值,設(shè)置key等等等扼倘,在Reflect對(duì)象上都存在跟啤,這個(gè)東西就是es6設(shè)置出來
把以前那些混亂的操作方法都統(tǒng)一。
let obj = {
name:"objname",
arr:[1,2,3,4],
fun:()=>{
console.log(123);
}
}
console.log(Reflect.get(obj,"name"));
設(shè)置也是一樣的
let obj = {
name:"objname",
arr:[1,2,3,4],
fun:()=>{
console.log(123);
}
}
Reflect.set(obj, "name", "333");
console.log(Reflect.get(obj,"name"));
再來一個(gè)官方的稍微復(fù)雜一點(diǎn)的例子
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賦值的時(shí)候唉锌,在那個(gè)對(duì)象種隅肥,正好監(jiān)聽的這個(gè)賦值,那就會(huì)觸發(fā)這個(gè)行為袄简。