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>