二.装饰者模式
//定义构造函数(类)
function People(id,name,sex){
this.id=id;this.name=name;
this.sex=sex;
}
//类开始的初始方法
People.prototype.getInfo=function(){return "编号:"+this.id;
}
//扩张装饰方法
People.prototype.decorate=function(str){
//获得装饰者对象
var override=this.constructor.decorates[str];
//创建一个新的对象,这个对象继承this
var f=function(){};
f.prototype=this;
var instance=new f();
instance.uber= f.prototype;
//将装饰者的方法添加到这个新建的对象中
for(i in override){
if(override.hasOwnProperty(i)){
instance[i]=override[i];
}
}
return instance;
}
//装饰者对象都将以构造函数的属性这种方式实现
People.decorates={};
装饰者对象
getInfo:function(){
var info=this.uber.getInfo();
return info+="\n名字:"+this.name;
}
}
装饰者对象
getInfo:function(){
var info=this.uber.getInfo();
return info+="\n性别:"+this.sex;
}
}
调用:
var my=new People('01','cyt','男');
my=my.decorate('name');
my=my.decorate('sex');
console.log(my.getInfo());
=========================
//编号:01
//名字:cyt
//性别:男
=========================