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]

  • 相关阅读:
    从拟物化到扁平,再到Material Design
    如何写一个解释器(1):编译原理
    理解JavaScript中的原型继承(2)
    Redis简介
    谈谈积累
    Hadoop(三):MapReduce程序(python)
    Hadoop(二):MapReduce程序(Java)
    统计学习方法十:隐马尔科夫模型二
    统计学习方法十:隐马尔科夫模型
    统计学习方法九:EM算法
  • 原文地址:https://www.cnblogs.com/johnwonder/p/1676102.html
Copyright © 2011-2022 走看看