类装饰
@addclass My {}function add(target) { // 修饰类的时候 target指代的就是类target.flag = 'ok'}console.log(My.flag) // ok
属性装饰
class Circle {@readonly PI = 3.14 // 不可修改}function readonly(target,key,descriptor) {// target:类的原型 key:PI descriptor:描述器descriptor.writable = false;return descriptor //必须返回一个描述对象}let c = new Circle();c.PI = 100 //会报错
原型的上的方法的装饰器
class Person{@saysay(){console.log('哈哈')}}function say(target,key,descriptor) {let oldSay = descriptor.valuedescriptor.value = function () { //修改方法console.log('start say');oldSay(); //调用旧方法console.log('end say');}}let p = new Person;p.say();
淘宝FED:ES7 Decorator 装饰者模式
