装饰器 1.0.0
foreword:
了解以下概念:
- Object.defineProperty(obj, prop, descriptor)
1、对象属性描述符 只能是以下两种形式之一
- 数据描述符
- 存取描述符
可同时具有的键值:
enumerable | writable | configurable | get | set | value | |
---|---|---|---|---|---|---|
数据描述符 | YES | YES | YES | NO | NO | YES |
存取描述符 | YES | NO | YES | YES | YES | NO |
一、针对属性方法的装饰器
装饰器本意是”装饰”类的实例,但此时实例还未生成,所以只能去修饰原型,这一点去类的修饰不同
装饰器会修改属性的描述对象(descriptor) ,然后被修改的描述对象在用来定义属性。
- 当一个方法有多个装饰器,先从外到内进入,由内向外执行
1 | function readonly(target, key , descriptor){ |
二、针对类的装饰器
装饰器对类的行为的改变,发生在代码编译时,而不是运行时
装饰器本身是编译时执行的函数
1 | /* |