如何在JavaScript中使用装饰器函数

  介绍

今天就跟大家聊聊有关如何在JavaScript中使用装饰器函数,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

具体如下:

装饰器函数(Decorator)用于给对象在运行期间动态的增加某个功能,职责等。相较通过继承的方式来扩充对象的功能,装饰器显得更加灵活,首先,我们可以动态给对象选定某个装饰器,而不用铁杆继承对象来实现某个功能点。其次:继承的方式可能会导致子类繁多,仅仅为了增加某一个单一的功能点,显得有些多余了。

下面给出几个常用的装饰器函数示例,相关代码请查看github。

1动态添加onload监听函数

function  addLoadEvent (fn), {   var 才能;oldEvent =, window;   如果才能(typeof  window.onload  !=, & # 39;函数# 39;),{   ,,,window.onload =, fn;   }else {才能   ,,,window.onload =,()函数,{   ,,,,,oldEvent ();   ,,,,,fn ();   ,,,};   ,,}   }   function  fn1 (), {   console.log才能(& # 39;onloadFunc  1 & # 39;);   }   function  fn2 (), {   console.log才能(& # 39;onloadFunc  2 & # 39;);   }   function  fn3 (), {   console.log才能(& # 39;onloadFunc  3 & # 39;);   }   addLoadEvent (fn1);   addLoadEvent (fn2);   addLoadEvent (fn3);

如何在JavaScript中使用装饰器函数

2前置执行函数和后置执行函数

Function.prototype.before =,函数(beforfunc), {   var 才能;self =,;   var 才能;outerArgs =, Array.prototype.slice.call(参数,,1);   return 才能;函数(),{   ,,,var  innerArgs =, Array.prototype.slice.call(参数);   ,,,beforfunc.apply (,, innerArgs);   ,,,self.apply (,, outerArgs);   ,,};   };   时间=Function.prototype.after 函数(afterfunc), {   var 才能;self =,;   var 才能;outerArgs =, Array.prototype.slice.call(参数,,1);   return 才能;函数(),{   ,,,var  innerArgs =, Array.prototype.slice.call(参数);   ,,,self.apply (,, outerArgs);   ,,,afterfunc.apply (,, innerArgs);   ,,};   };   var  func =,函数(名字){   console.log才能(& # 39;小姐:am  & # 39;, +,名称);   };   var  beforefunc =,函数(年龄){   console.log才能(& # 39;小姐:am  & # 39;, +, age  +, & # 39;, years 老# 39;);   };   var  afterfunc =,函数(性别){   console.log才能(& # 39;小姐:am  a  & # 39;, +,性别);   };   var  beforeFunc =, func.before (beforefunc, & # 39;安迪# 39;);   var  afterFunc =, func.after (afterfunc, & # 39;安迪# 39;);   beforeFunc (& # 39; 12 & # 39;);   afterFunc(& # 39;男孩# 39;);

执行结果,控制台打印如下:

小姐:am  12, years 老了   小姐:am 安迪   小姐:am 安迪   小姐:am  a 男孩

3函数执行时间计算

function 日志(函数){   return 才能;函数(args) {   ,,,const  start =, Date.now ();   ,,,let  result =, func (…args);   ,,,const  used =, Date.now(),安康;开始;   ,,,console.log (“call  $ {func.name}, ($ {args}), used  ${}使用,女士”);   ,,,return 结果;   ,,};   }   function 计算(次){   let 才能;sum =, 0;   let 才能;小姐:=,1;   而才能(小姐:& lt;,次){   ,,,sum  +=,我;   ,,,我+ +;   ,,}   return 才能,总和;   }   时间=runCalculate 日志(计算);   let  result =, runCalculate (100000);   console.log(结果);

注:这里我使用了ES2015 (ES6)语法,如果你感兴趣可以查看前面关于ES6的相关内容。

如何在JavaScript中使用装饰器函数

看完上述内容,你们对如何在JavaScript中使用装饰器函数有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

如何在JavaScript中使用装饰器函数