首页 > 其他 > 详细

Reflect

时间:2020-10-11 00:23:37      阅读:67      评论:0      收藏:0      [点我收藏+]

什么是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);

Reflect

原文:https://www.cnblogs.com/sheepyj/p/13795749.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!