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();

猜你喜欢

转载自www.cnblogs.com/yangjiale/p/11261379.html