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

  • 相关阅读:
    【redis源码】(三)Zipmap
    【redis源码】(五)Ziplist
    mint 13 安装 phpunit
    【php】nginx phpfpm “session锁”问题
    linux 系统下 恢复被误删文件
    【python】python相关的那些事【一】python 中的变量
    【redis源码】(八) Intset.c
    【python】【scrapy】使用方法概要(三)
    【redis源码】(六)Ae.c
    【c++】关于默认构造函数
  • 原文地址:https://www.cnblogs.com/Scooby/p/11989563.html
Copyright © 2011-2022 走看看