zoukankan      html  css  js  c++  java
  • AOP in JavaScript

    // function hello() {

    //     for (var i = 0; i < arguments.length; i++) {

    //         arguments[i] += "[hello]";
    //     }
    //     return arguments;
    // }

    // //console.log(Array.prototype.join.apply(args, [' ']));//World[hello] JavaScript[hello]

    // var aspect = { before: function(context, targetName, fn) {
    //     var target = context[targetName];

    //     context[targetName] = function() {
    //         return target.apply(context, fn.apply(context, arguments));
    //     }
    // }

    //};

    //aspect.before(window, 'hello', function() {
    //    for (var i = 0; i < arguments.length; i++) {
    //        arguments[i] += "[before]";
    //    }
    //    return arguments;
    //});

    //var args = hello('World', 'JavaScript');


     var aspect = { before: function(context, targetName, fn) {
         var target = context[targetName];
         context[targetName] = function() {

             return target.apply(context, fn.apply(context, arguments));
         }
     }, after: function(context, targetName, fn) {
         var target = context[targetName];

         context[targetName] = function() {
             return fn.apply(context, target.apply(context, arguments));
           };
         }
     };

     function hello() {

         for (var i = 0; i < arguments.length; i++) {
             arguments[i] += "[hello]";
         }
         return arguments;
     }

     aspect.before(window, 'hello', function() {
         for (var i = 0; i < arguments.length; i++) {
             arguments[i] += "[before]";
         }
         return arguments;
     });

     aspect.after(window, 'hello', function() {
         for (var i = 0; i < arguments.length; i++) {
             arguments[i] += "after";
         }
         return arguments;
     });

     var args = hello('World', 'JavaScript');
     
     console.log(Array.prototype.join.apply(args,[' ']));
     
     //World[before][hello][after] JavaScript[before][hello][after]

  • 相关阅读:
    【2、koa】async和await(ES7)
    外部获取异步方法中的数据两种方式callback&Promise
    filter方法
    【ES6】let、var、const
    ubuntu下安装typora
    自我修养之产品思维与能力
    vue
    allure-pytest 测试报告分享给大家
    最近公司遇到了APR攻击,顺便了解一下知识
    Sybase数据库连接配置
  • 原文地址:https://www.cnblogs.com/johnwonder/p/1676102.html
Copyright © 2011-2022 走看看