• ES6学习之装饰器


    定义:修饰器是一个对类进行处理的函数,用来修改类的行为

    <注>:装饰器只能用来修改类及类的方法

    类的装饰:

    • 静态属性:只能通过类访问,修饰函数直接在类上操作
    @testable
    class MyTestableClass {
      // ...
    }
    
    function testable(target) {
      target.isTestable = true;
    }
    
    MyTestableClass.isTestable // true

                <注>1)testable函数的参数targetMyTestableClass类本身。

           2)修饰器也可以接受参数:这就等于可以修改修饰器的行为

    function testable(isTestable) {
      return function(target) {
        target.isTestable = isTestable;
      }
    }
    
    @testable(true)
    class MyTestableClass {}
    MyTestableClass.isTestable // true
    
    @testable(false)
    class MyClass {}
    MyClass.isTestable // false
    • 实例属性:可以在实例中访问,对类的prototype对象进行操作
    function testable(target) {
      target.prototype.isTestable = true;
    }
    
    @testable
    class MyTestableClass {}
    
    let obj = new MyTestableClass();
    obj.isTestable // true

    类方法的修饰

    class Person {
      @readonly
      name() { return `${this.first} ${this.last}` }
    }
    
    function readonly(target, name, descriptor){
      // descriptor对象原来的值如下
      // {
      //   value: specifiedFunction,
      //   enumerable: false,
      //   configurable: true,
      //   writable: true
      // };
      descriptor.writable = false;
      return descriptor;
    }

    <注>:修饰器第一个参数是类的原型对象,第二个参数是所要修饰的属性名,第三个参数是该属性的描述对象。

  • 相关阅读:
    jQuery找出所有没有disabled属性的checkbox
    jQuery prop()方法
    Aliyun 中PHP如何升级
    The connection to the server localhost:8080 was refused
    ks8集群扩容新增节点,以及xshell无法访问的问题
    设置小程序模板消息keyword_id_list问题
    git如何新建仓库,并初始化代码
    k8s应用配置详解
    git如何把分支变成master
    nginx首页根据IP跳转
  • 原文地址:https://www.cnblogs.com/sghy/p/8027311.html
Copyright © 2020-2023  润新知