JS-工厂模式&构造函数&prototype
工厂模式
通过一个函数(工厂函数)来创建对象
function createPerson(name,age){
var obj={
name:name,
age:age,
setName:function(name){
this.name=name;
}
};
return obj; //return一个object
}
createPerson("sam",20);
自定义构造函数
function Person(name,age){ //构造函数首字母要大写
this.name=name;
this.age=age;
this.setName=function(name){
this.name=name;
};
}
var person1=new Person("sam",20);
工厂模式和构造函数的区别
- 工厂模式返回的都是一个object对象,没有具体类型
- 构造函数返回的时一个具体的类型对象
protorype的使用
声明未声明属性
Person.prototype.phone=null; //接上面代码,在Person没有phone的情况下用peototype声明
var person2=new Person("jack",21);
person2.phone="25698546";
alert(person2.phone); //正常输出
动态声明方法
function Person(name,age){
this.name=name;
this.age=age;
this.say=function(){
alert("miao~");
};
}
var p1=new Person("sam",20);
p1.say();
在上面的情况下say只能miao~,可以用prototype
function Person(name,age){
this.name=name;
this.age=age;
//先不写say方法
}
Person.prototype.say=null; //声明say方法
var p1=new Person("sam",20);
p1.say=function(){ //设置p1的say方法
alert("miao~");
};
p1.say();
var p2=new Person("gou",2);
p2.say=function(){ //设置p2的say方法
alert("wang~");
};
p2.say();