工厂模式
函数里面封装对象最后返回对象 对象都是object类型 解决了创建多个对象的问题。
function work(name,sex){
var obj=new Object(); //实例化
obj.name=name;
obj.sex=sex;
obj.sleep=function(){
return "睡觉";
}
return obj;
}
var object=work("花生","男");
console.log(object);
构造函数模式
没有显示创建的对象 没有返回语句 直接将属性赋给this对象。
function bullet(){
this.width=20;
this.height=15;
this.speed=10;
this.g=9.8;
this.flymove=function(){
}
}
var b=new bullet();
console.log(b);
function person(name,age,job){
this.name=name;
this.age=age;
this.job=job;
this.speak=function(){
console.log(this.name);
}
}
var person2=new person("花生",29,"未知");
console.log(person2);
原型模式
空对象 原型追加
会导致不同的对象数据共享
function person(){
}
person.prototype.sleep=function(){
return "睡觉";
}
person.prototype.name="花生";
var p=new person;
console.log(p);
组合模式(构造模式+原型链)
function f1(){
this.name="花生";
}
f1.prototype.sleep=function(){
return "睡觉";
}
var f=new f1();
console.log(f);
单例模式
只有一个实例 返回唯一一个对象
var obj=(function(){
var newobj;
function getobj(){
if(newobj==undefined){
newobj=new factory();
}
return newobj;
}
function factory(){
//对象的封装
this.name="花生";
}
return {
getobj:getobj
}
})();
console.log(obj.getobj());