zoukankan      html  css  js  c++  java
  • 装饰器Decorator的需要注意的地方

    装饰器(Decorator) es7 语法

    底层原理(是什么):其实质是个函数,主要用来装饰变量,是(Object.defineProperty)的语法糖,有利于理解React中双向数据绑定的原理。


    Object.defineProperty(target, prop, desc): 给对象添加或修改属性的
    属性值:

      target 需要定义属性的当前对象
      prop 当前需要定义的属性名 类型:字符
      desc 属性描述符 类型:对象
        value: 默认值 undefined
        writable: 是否修改 类型:布尔 false
        configrable 可否删除|重新定义 类型:布尔 false
        enumerable 可否枚举 类型:布尔 false
        get 当访问属性时触发该方法getter,默认为undefined
        set 当属性被修改时触发该方法setter 属性劫持,默认为undefined

    注意:get/set 和value/writable 是互斥的。

    设置|添加 对象属性
    1. {属性:value} 对象.属性|对象['属性'] 默认可以修改,可以删除,可以枚举的
    2. Object.defineProperty() 默认 不可以修改,不可以删除,不可以枚举的

    function 装饰器名 (target,prop,descriptor){
      descriptor.writable=false;//writable属性是否可以写入
      return descriptor;
    }

    如何实现(怎么用):

    @装饰器名 类
    @装饰器名 类的实例属性|静态属性
    @装饰器名 类的实例方法|静态方法

    使用场景(用在哪)
    mobx / angluarTs

    参考: https://segmentfault.com/a/1190000019446677?utm_source=tag-newest

  • 相关阅读:
    JAVA 数据结构 ConcurrentHashMap
    String|StringBuilder|StringBuffer
    JAVA 数据结构 HashMap
    JVM 经典垃圾收集器大合集
    JVM 垃圾收集算法
    JVM GC内存回收
    跳跃游戏||
    K次取反后最大化数组和
    删除排序链表中的重复元素
    排序链表
  • 原文地址:https://www.cnblogs.com/Scooby/p/11989563.html
Copyright © 2011-2022 走看看