JavaScript面向切面编程

偏执的太偏执、 2021-05-20 14:19 776阅读 0赞

JS也有切面编程,有时间学习一下。毕竟面向切面可以在一些通用处理场景,如日志打印等可以省很多代码。

看个例子:

  1. //通过原型链注入自定义函数
  2. Function.prototype.before = function (beforeFn) {
  3. var _self = this; // 保存原函数引用
  4. return function () { // 返回包含了原函数和新函数的‘代理’函数
  5. beforeFn.apply(this, arguments); // 执行新函数,修正this
  6. return _self.apply(this, arguments); // 执行原函数
  7. }
  8. };
  9. Function.prototype.after = function (afterFn) {
  10. var _self = this;
  11. return function () {
  12. var ret = _self.apply(this, arguments);
  13. afterFn.apply(this, arguments);
  14. return ret;
  15. }
  16. };
  17. var obj = {
  18. method: function test() {
  19. alert("2")
  20. }
  21. };
  22. obj.method = obj.method.before(function () {
  23. alert("1");
  24. }).after(function () {
  25. alert("3")
  26. });
  27. function startTest() {
  28. obj.method();
  29. }

弹出的顺序就是:1 ->2 ->3

js面向切面编程的目的是不改变原有方法test()中的逻辑,去做一些额外的事。

发表评论

表情:
评论列表 (有 0 条评论,776人围观)

还没有评论,来说两句吧...

相关阅读

    相关 AOP面向切面编程

    [1.引言][1.]         原文地址:[点击打开链接][1.] 软件开发的目标是要对世界的部分元素或者信息流建立模型,实现软件系统的工程需要将系统分解成可以创

    相关 AOP面向切面编程

    AOP 面向切面编程 1.使用场景还原 当我们打开京东 app 进入首页,如果当前是没有网络的状态,里面的按钮点击是没有反应的。只有当我们打开网络的情况下,点击按钮