`
sxpyrgz
  • 浏览: 70830 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

javascript Aop

阅读更多

源作者:司徒正美 http://www.cnblogs.com/rubylouvre/tag/javascript/ 

<script type="text/javascript">
function Person(){
	this.say =  function(name,lang){
		alert("我的名字叫做"+name+",专注于"+lang+"……");
	}
}
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");
}
</script>
该断程序主要用来进行JS方法重写,然后进行方法前后的方法拦截处理。
      		var k = 100,timer=null;
    		timer=setInterval(function(){
      			k = k - 2;
      			if(k>30) {
       				div.style.filter = "alpha(opacity="+k+")";
       				div.style.opacity = ""+k/100+"";
      			}
  	   	},10);
这一段程序主要用来,用户指定某个DIV显示时,可以用它进行渐透明的显示透明度
Function.prototype.extend = function(parentclass){
  	var bs    = function(){};
  	bs.prototype = parentclass.prototype;
  	this.prototype = new bs();
  	this.prototype.superClass = parentclass;
  	this.prototype.constructor = this;
}

  如果我们用PROTOTYPE进行继承的时候可能THIS指针指的不正确,可以通过以上解决THIS指针的指向

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics