Reflect

什么是Relect?

Reflect是反射的意思。
Proxy和Reflect是ES6为了操作对象引入的API.
Reflect可以用于获取目标对象的行为。它与Object类似,但是更易读,为操作对象提供了一种更优雅的方式。它的方法与Proxy是对应的。
ES6中将Object的一些明显属于语言内部的方法移植到Reflect对象上。

//如果需要增强方法的功能,基本上需要配合Reflect反射来使用。

基本使用

Reflect.apply(target,ctx,args)

     function sum(a, b) {
         //console.log(this);
         //console.log(arguments);
         return a + b;
     }
     let newSum = new Proxy(sum, { //拦截sum函数
         apply(target, ctx, args) {
             //target:调用的方法(函数)
             //ctx:this指向
             //args:参数数组
             console.log(target); //sum函数
             console.log(ctx); //undefined
             console.log(args); //[1,2]
             console.log(arguments); //参数列表
             return Reflect.apply(...arguments) * 2; //使用反射,使sum函数执行通过
         }
     })
     console.log(newSum(1, 2)); //6
     sum.apply("abc", [1, 2]); //this指向String{"abc"}
     console.log('assign' in Object); //true
     //查看对象是否有某个属性
     console.log(Reflect.has(Object, 'assign')); //true
     //删除属性
     let obj = {
             name: '张三',
             age: 18
         }
         // delete obj.name;
     Reflect.deleteProperty(obj, 'name');
     console.log(obj);
posted @ 2020-10-10 23:10  小耳朵兔  阅读(595)  评论(0)    收藏  举报