装饰器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

posted @ 2019-12-05 15:14  Scok  阅读(257)  评论(0编辑  收藏  举报