AOP in JavaScript
2010-03-01 23:05 爱研究源码的javaer 阅读(194) 评论(0) 收藏 举报// 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]
                    
                
                
            
        
浙公网安备 33010602011771号