AOP in JavaScript
2010-03-01 23:05 爱研究源码的javaer 阅读(187) 评论(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]