工厂模式
将方法属性单独定义,避免重复创建,将公共的属性定义到一个函数中,可以重复使用。
var skill=function(){
return 'ada';
}
function CreatePerson(name,age,gender){
var obj={};
obj.name=name;
obj.age=age;
obj.gender=gender;
obj.skill=skill;
return obj;
}
var p1=CreatePerson('ll',12,'nv');
alert(p1.skill());
构造函数模式
var skill=function(){return 'ada';};
function CreatePerson(name,age,gender){
this.name=name;
this.age=age;
this.gender=gender;
this.skill=skill;
}
var p2=new CreatePerson('ll',12,'女');
alert(p2.name);
alert(p2.skill());
注意:构造函数模式在实例化的时候要使用New操作符
构造函数和原型的混合方式
将公共属性放在原型上,私有属性放进构造函数中,
function Person(){
this.name='ll';
this.age=12;
};
Person.prototype.skill=function(){
return 'ada';
};
var x=new Person();
alert(x.skill());
构造函数和原型的动态原型模式
function Person(){
this.name='ll';
this.age=32;
if(typeof Parent.skill=='undefined'){
Person.prototype.skill=function(){
returin this.name;
}
Person.skill=true;
}
};
var x=new Person();