亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > JavaScript > 正文

JavaScript之AOP編程實例

2024-05-06 16:23:21
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了JavaScript的AOP編程,以實例形式分析了javascript面向切面編程的實現技巧,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了JavaScript之AOP編程。分享給大家供大家參考。具體如下:

 

 
  1. /* 
  2. // aop({options}); 
  3. // By: adamchow2326@yahoo.com.au 
  4. // Version: 1.0 
  5. // Simple aspect oriented programming module 
  6. // support Aspect before, after and around 
  7. // usage: 
  8. aop({ 
  9. context: myObject, // scope context of the target function. 
  10. target: "test", // target function name 
  11. before: function() { // before function will be run before the target function 
  12. console.log("aop before"); 
  13. }, 
  14. after: function() { // after function will be run after the target function 
  15. console.log("aop after"); 
  16. }, 
  17. around: function() { // around function will be run before and after the target function 
  18. console.log("aop around"); 
  19. } 
  20. }); 
  21. */ 
  22. var aop = (function() { 
  23. var options = {}, 
  24. context = window, 
  25. oFn, 
  26. oFnArg, 
  27. targetFn, 
  28. targetFnSelector, 
  29. beforeFn, 
  30. afterFn, 
  31. aroundFn, 
  32. cloneFn = function(Fn) { 
  33. if (typeof Fn === "function") { 
  34. return eval('[' +Fn.toString()+ ']')[0]; 
  35. return null
  36. }, 
  37. checkContext = function() { 
  38. if (options.context) { 
  39. context = options.context; 
  40. if (typeof context[(options.target).name] === "function") { 
  41. targetFnSelector = (options.target).name; 
  42. targetFn = context[targetFnSelector]; 
  43. else if (typeof context[options.target] === "function") { 
  44. targetFnSelector = options.target; 
  45. targetFn = context[targetFnSelector]; 
  46. if (targetFn) { 
  47. oFn = cloneFn(targetFn); 
  48. oFnArg = new Array(targetFn.length); 
  49. return true
  50. else { 
  51. return false
  52. }, 
  53. run = function() { 
  54. context[targetFnSelector] = function(oFnArg) { 
  55. if (aroundFn){ 
  56. aroundFn.apply(this, arguments); 
  57. if (beforeFn){ 
  58. beforeFn.apply(this, arguments); // 'this' is context 
  59. oFn.apply(this, arguments); 
  60. if (afterFn){ 
  61. afterFn.apply(this, arguments); // 'this' is context 
  62. if (aroundFn){ 
  63. aroundFn.apply(this, arguments); 
  64. }; 
  65. }; 
  66. return function(opt){ 
  67. if (opt && typeof opt === "object" && !opt.length) { 
  68. options = opt; 
  69. if (options.target && checkContext()) { 
  70. if (options.before && typeof options.before === "function") { 
  71. beforeFn = options.before; 
  72. if (options.after && typeof options.after === "function") { 
  73. afterFn = options.after; 
  74. if (options.around && typeof options.after === "function") { 
  75. aroundFn = options.around; 
  76. run(); 
  77. }; 
  78. })(); 
  79. // test examples 
  80. // ----------------- aop modify global function ---------------// 
  81. function test(name, age) { 
  82. console.log("test fn. name = " + name + " age: " + age); 
  83. aop({ 
  84. target: "test"
  85. before: function() { 
  86. console.log("aop before"); 
  87. }, 
  88. after: function() { 
  89. console.log("aop after"); 
  90. }, 
  91. around: function() { 
  92. console.log("aop around"); 
  93. }); 
  94. // run 
  95. test("adam", 6); 
  96. // ----------------- aop test modify method in an object ---------------// 
  97. var myobj = { 
  98. myName: "testName"
  99. sayName: function() { 
  100. console.log(this.myName); 
  101. }, 
  102. childObj: { 
  103. age: 6, 
  104. say: function() { 
  105. console.log(this.age); 
  106. }; 
  107. aop({ 
  108. context: myobj, 
  109. target: "sayName"
  110. before: function() { 
  111. console.log("aop before say name = " + this.myName); 
  112. }, 
  113. after: function() { 
  114. console.log("aop after say name = " + this.myName); 
  115. }, 
  116. around: function() { 
  117. console.log("aop around say name = " + this.myName); 
  118. }); 
  119. // run 
  120. myobj.sayName(); 
  121. aop({ 
  122. context: myobj.childObj, 
  123. target: "say"
  124. before: function() { 
  125. console.log("aop before say name = " + this.age); 
  126. }, 
  127. after: function() { 
  128. console.log("aop after say name = " + this.age); 
  129. }, 
  130. around: function() { 
  131. console.log("aop around say name = " + this.age); 
  132. }); 
  133. myobj.childObj.say(); 

希望本文所述對大家的javascript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97精品视频在线| 色老头一区二区三区在线观看| 国产一区二区三区三区在线观看| 日韩精品在线播放| 国产91在线高潮白浆在线观看| 北条麻妃一区二区三区中文字幕| 国产午夜精品全部视频在线播放| 亚洲精品自拍第一页| 欧美日韩国产成人| 成人精品一区二区三区电影免费| 国产精品成熟老女人| 国产精品尤物福利片在线观看| 成人a免费视频| 久久精品91久久久久久再现| 国产精品精品一区二区三区午夜版| 欧美午夜影院在线视频| 欧美资源在线观看| 日韩网站在线观看| 亚洲国产天堂网精品网站| 亚洲的天堂在线中文字幕| 亚洲最大的网站| 色哟哟入口国产精品| 亚洲国产精品悠悠久久琪琪| 亚洲美女自拍视频| 国产精品高潮呻吟久久av无限| 久久在线免费视频| 日韩av手机在线| 亚洲影视九九影院在线观看| 国模私拍一区二区三区| 国产一区二区色| 日韩精品极品在线观看| 国产一区二区三区在线观看视频| 中文字幕九色91在线| 综合136福利视频在线| 亚洲欧美精品伊人久久| 久久影院资源站| 色中色综合影院手机版在线观看| 91精品国产综合久久香蕉922| 这里只有精品在线观看| 国产精品一区专区欧美日韩| 日韩亚洲欧美中文高清在线| 国产一区二区日韩| 人人爽久久涩噜噜噜网站| 日韩中文字幕在线播放| 亚洲美女av网站| 欧美高清理论片| 亚洲已满18点击进入在线看片| 欧美肥老太性生活视频| 97国产精品久久| 国产精品视频自在线| 日韩av免费看| 欧美大尺度电影在线观看| 久久最新资源网| 亚洲国产第一页| 欧美精品激情视频| 国产不卡av在线免费观看| 国产精品视频不卡| 亚洲人成网站999久久久综合| 日韩精品在线观| 国产在线精品一区免费香蕉| 亚洲久久久久久久久久| 国产精品久久久久久亚洲调教| 国产精品久久久久久影视| 夜夜嗨av色综合久久久综合网| 成人免费视频网| 欧美极品少妇与黑人| 亚洲人成电影在线| 中文字幕精品—区二区| 国产成人一区三区| 久久久欧美一区二区| 欧美日韩国产成人在线| 国产成人免费91av在线| 日韩av在线免费观看一区| 久久国产精品久久久久| 国产精品日韩在线观看| 在线看日韩欧美| 亚洲国产精品va| 亚洲欧美资源在线| 在线播放国产一区二区三区| 国产精品v片在线观看不卡| 亚洲性xxxx| 久久免费视频这里只有精品| 日韩最新中文字幕电影免费看| 国内自拍欧美激情| 欧美综合在线观看| 成人久久一区二区| 一区二区三区亚洲| www.午夜精品| 久久国产精彩视频| 国产精品美女主播在线观看纯欲| 欧美性视频在线| 日韩福利在线播放| 97精品视频在线播放| 国产精品视频中文字幕91| 亚洲午夜未删减在线观看| 国产精品视频网址| 国产一区深夜福利| 国产午夜精品全部视频播放| 久久久久中文字幕2018| 国产日韩欧美视频| 成人网在线视频| 亚洲国产精品久久久久秋霞不卡| 亚洲日本中文字幕免费在线不卡| 久久亚洲影音av资源网| 91国产高清在线| 成人免费大片黄在线播放| 欧美电影电视剧在线观看| 一区二区三区国产视频| 欧美电影免费播放| 国产人妖伪娘一区91| 九九久久国产精品| 久久久久久久久国产精品| 中文字幕精品在线视频| 91在线中文字幕| 欧美激情亚洲另类| 久久影院资源网| 91社影院在线观看| 狠狠躁夜夜躁人人躁婷婷91| 亚洲精品国精品久久99热一| 久久久久久成人精品| 亚洲国产精品一区二区三区| 久久99精品久久久久久青青91| 91沈先生作品| 久久精品视频在线播放| 国产精品美女999| 2019中文字幕在线免费观看| 日韩欧美精品网站| 最近2019中文字幕第三页视频| 色av吧综合网| 亚洲无限av看| 国产欧美精品一区二区三区介绍| 亚洲成av人影院在线观看| 日韩av网站在线| 57pao国产精品一区| 97视频免费看| 国产精品福利无圣光在线一区| 亚洲精品suv精品一区二区| 日本精品va在线观看| 一本色道久久88综合日韩精品| 亚洲精品国产品国语在线| 午夜精品福利在线观看| 日韩欧美有码在线| 亚洲人在线观看| 狠狠躁天天躁日日躁欧美| 亚洲成成品网站| 中文字幕欧美视频在线| 日韩免费在线免费观看| 欧美美女操人视频| 91探花福利精品国产自产在线| 欧美激情一二三| 中文字幕日韩视频| 亚洲男子天堂网| 国产一区二区三区在线看| 久久精品国产亚洲| 色偷偷91综合久久噜噜| 国产午夜精品视频| 欧日韩在线观看| 一区二区三区四区在线观看视频| 国内精品久久久久影院 日本资源| 久久久久久九九九| 国产精品久久久久免费a∨大胸| 国产日韩在线免费| 色噜噜久久综合伊人一本| 国产噜噜噜噜噜久久久久久久久|