zoukankan      html  css  js  c++  java
  • es6----修饰器笔记

    //修饰器是一个t函数,用来修改类的行为,修饰器对类的行为的改变是代码编译时发生,而不是执行时
    // 修饰器能在编译阶段运行代码
    //参数target就是所要修饰的类
    function testTable(target) {
      target.isTestable = ture;
    }
    
    @testtable
    class MyTesttableClass {}
    
    // 如果一个参数不够用,可以在修饰器外面在封装一层函数
    function testtable(isTestable) {
      return function(target) {
        target.isTestable = isTestable;
      }
    }
    
    @testTable(true)
    class MyTesttableClass {}
    MyTesttableClass.isTestable // true
    
    // 上面的例子是为类添加一个静态属性,如果想添加实列属性,可以通过目标类的prototype对象操作
    // 因为类的属性和方法都是在prototype上
    function testable(target) {
      target.prototype.isTestable = true
    }
    @testTable
    class MyTesttableClass {}
    
    const obj = new MyTesttableClass(); // 创建一个MyTesttableClass实例
    obj.isTestable // true
    
    // 上面例子是通过修饰器,把isTestables属性加到MyTesttableClass类的实例上面,可以用Object.assign()来模拟这个功能
    const foo = {
      isTestable: true
    }
    class MyTesttableClass {}
    Object.assign(MyTesttableClass.prototype, foo);
    const obj = new MyTesttableClass();
    obj.isTestable // true

    备注:修饰器不仅可以修饰类,还可以修饰类的属性,注意一点,修饰器只用于修饰类和类的方法,不可以用于函数,因为函数存在函数提升。

  • 相关阅读:
    HDU 2655 主席树
    Codeforces Round #169 (Div. 2) A水 B C区间更新 D 思路
    Codeforces Round #402 (Div. 2) A B C sort D二分 (水)
    Docker 网络 Flannel
    Docker 搭建 etcd 集群及管理
    Iptables 端口转发
    CentOS7 citus9.5 集群安装及管理
    Ubuntu 忘记密码
    Zookeeper 启动错误
    数据结构 B树 B+树 B*树 LSM-树
  • 原文地址:https://www.cnblogs.com/yxfboke/p/11782815.html
Copyright © 2011-2022 走看看