Decorator

  1. 装饰方法
  2. 装饰类

装饰器模式为了让不修改原类的情况下表现的更好,我们可以给方法加上装饰器,也可以给类加上装饰器。参考自(文章)[http://taobaofed.org/blog/2015/11/16/es7-decorator/]

装饰方法

装饰器需要 3 个参数,target,key,descriptor,这个跟 Object.defineProperty 的效果一样的。

function decorateLight(target, key, descriptor) {
  const method = descriptor.value;
  /*let moreAtk = 50;*/
  let ret;
  descriptor.value = (...args)=>{
    /*args为入参,想做什么,自己定义就好了*/
    /*args[1] += moreAtk;*/
    ret = method.apply(target, args);
    return ret;
  }
  return descriptor;
}

装饰类

function addFly(canFly){
  return function(target){
    target.canFly = canFly;
    let extra = canFly ? '(技能加成:飞行能力)' : '';
    let method = target.prototype.toString;
    target.prototype.toString = (...args)=>{
      return method.apply(target.prototype,args) + extra;
    }
    return target;
  }
}

写的言简意赅,让人直接就想用啊!

使用起来确实挺好用的,就是 decorator 的抽离挺难控制的。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 981909093@qq.com

文章标题:Decorator

文章字数:211

本文作者:泽鹿

发布时间:2019-08-28, 16:45:23

最后更新:2019-08-28, 20:05:45

原始链接:http://panyifei.github.io/2019/08/28/前端技术/js/框架以及规范/ECMAScript6/Decorator/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏