javascript AOP的实现【练习】

javascript AOP的实现【练习】 web前端 杭州-小白

刚群里99大神童鞋,发了一个地址 司徒正美的博客,他们都是大神呢,这一篇内容是关于 javascript AOP的实现呢,这里小小的玩了一下,不错确实很强大.

代码如下:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
	<meta charset="UTF-8">
	<title>aop练习</title>
</head>
<body>
	<input type="button" id="btn" value="go"></input>
	<script type="text/javascript">
	/*target:被织入的对象 ,method:被织入的方法名字 ,advice: 通知函数*/
		function Person(){
			this.say=function(name,lang){
				alert("您的名字叫"+name+"?是否专注于"+lang+"!");
			}
		}
		function voice(){
			alert("gogogo!");
		}
		Aspects=function(){};
		Aspects.prototype={
			before:function(target,method,advice)
			{
				var original=target[method];
				target[method]=function(){
					(advice)();
					original.apply(target,arguments);
				}
				return target;
			},
			after:function(target,method,advice){
				var original=target[method];
				target[method]=function(){
					original.apply(target,arguments);
					(advice)();
				}
				return target;
			},
			around:function(target,method,advice)
			{
				var original=target[method];
				target[method]=function(){
					(advice)();
					original.apply(target,arguments);
					(advice)();
				}
				return target;
			}
		}
		window.onload=function(){
			//var t=new Person;
			//var a=new Aspects;
			//t=a.before(t,"say",function(){alert("请介绍一下自己");});
			//alert("分割线");
			//t.say("小白","javascript");

			var btn=document.getElementById('btn');
			btn.onclick=voice;
			var a=new Aspects;
			a.after(btn,"onclick",function(){alert("不许go!回来!");});
			// a.after(btn,"onclick",function(){alert("不许go!回来!");});
		}
	</script>
</body>
</html>	

哈哈,感觉这个特别有用嘛。。嘿嘿.PS:继续努力….

原文详细地址:http://www.cnblogs.com/rubylouvre/archive/2009/08/08/1541578.html