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]

  • 相关阅读:
    写在寒假
    Docker安装Redis(两种方式)
    JVM类加载机制
    RabbitMQ学习
    MySQL索引详解
    Java内存区域
    Window10下的Docker Desktop安装(保姆级教程)
    JVM垃圾回收
    力扣Hot100(目前进度89/100)
    C# 发送邮件实例
  • 原文地址:https://www.cnblogs.com/johnwonder/p/1676102.html
Copyright © 2011-2022 走看看