es7 元编程 (Meta-Programming)

元编程(Meta-Programming)是一种编程技巧,它指的是程序可以操作自身或其它代码或语言结构,而不是仅仅操作数据。

在ES7 中提供了 Reflect API, Proxies, Decorators 等特性,可以被使用来实现元编程。
 
 Reflect API :
ES7中的Reflect API可以用来访问对象的元数据,如定义在对象上的属性和方法。这样,开发人员就可以使用Reflect API来动态地创建、修改和分析JavaScript对象。
   function add(a,b){
        return a+b;
   }
   //使用apply调用函数
   Reflect.apply(add,[1,2]);  //返回 3
   
   //使用get获取属性
   Reflect.get(add,"name");  //返回 "add"
   
   //使用defineProperty定义属性
   Reflect.defineProperty(add,"age",{value:1,configurable:false});
   Reflect.get(add,"age"); //1
   
   //使用deleteProperty删除属性
   Reflect.deleteProperty(add)

  

 proxy :

  // 定义一个对象
   let obj = {name:"obj"};
   // 定义一个代理对象
   let proxy = new Proxy(obj, {
       get: function(target, property) {
           return "Accessed to property: " + property;
       }
   });
   // 通过代理对象访问属性
   console.log(proxy.name); // "Accessed to property: name"

 

Decorators:  

   //定义一个装饰器
   function readonly(target, key, descriptor) {
       descriptor.writable = false;
       return descriptor;
   }
   class Person {
       @readonly
       name() { return `${this.first} ${this.last}` }
   }
   var p = new Person();
   p.name = "john" // throws an error

  

posted @ 2021-08-07 12:20  break_happy  Views(41)  Comments(0Edit  收藏  举报