关于JS面向对象的问题一

<pre name="code" class="javascript">已经许久看了关于JS的一些东西,略微懂了点,其中的JS的动态语言特征和关于词法的语法之类的东西比较难懂,今天还是在看了一个关于JS实现面向对象的一个简单的例子,例子如下:

 
 function Person(){
     var name;
	 var sex;

	 this.setName=function(o){
	   name=o;
	  this._valueChangeHandler('name');
	 }
	 this.setSex=function(s){
	   sex=s;
	 }
	 this.getName=function(){
	   return name;
	 }
   }

 Person.prototype={
   show:function(){document.write('My name is:'+this.getName());},
   onChange:function(valueName,fun){
     this["_"+valueName+"ChangeHadlers"]=this["_"+valueName+"ChangeHandlers"]||[];
	 this["_"+valueName+"ChangeHadlers"].push(fun);
   },
   _valueChangeHandler:function(valueName){
      var o= this["_"+valueName+"ChangeHadlers"];
	  if(o){
	   alert(o.length)
	    for(var i=0,n=o.length;i<n;i++){
		   var methodName="get"+valueName.charAt(0).toUpperCase()+valueName.slice(1);
		   o[i](this[methodName]());
		}
	  }
   }
 }

测试实例:
  var p1 = new Person();
 p1.onChange('name',function(o){
   if(o=='dog')
   alert(1);
   else
   alert(2);
 }) 
p1.setName(''); 显示了1、2
 p1.onChange('name',function(){
   alert('you are edit info of name');
 })
 p1.setName('dog');这里显示了1、2、1、<span style="font-family: Arial, Helvetica, sans-serif;">'you are edit info of name',</span>
<span style="font-family:Arial, Helvetica, sans-serif;">这个有个缺陷就是第三个显示为1,说明方法给覆盖掉了,怎么样才能实现比如想多个方法挂起来呢?因为构造里面的</span><pre name="code" class="javascript"> this["_"+valueName+"ChangeHadlers"].push(fun);这句话就是应该是能多个方法挂在同一个设置里面的吗?求解。。。。。。
 
<span style="font-family:Arial, Helvetica, sans-serif;">
</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值