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