js比较常用的设计模式有工厂模式,单例模式,构造模式,原型模式,组合模式使用构造模式与原型模式。
1.工厂模式
函数的封装:把实现同一个功能的相同代码放在一个函数中,以后再想实现这个功能的时候,我们只需要直接的执行这个函数就可,减少了页面中的坑余代码,提高代码的重复使用率。
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(typeof object);
2.单例模式
返回的是一个对象
var obj = (function () {
var newobj;
function getobj() {
//实例化对象 返回对象
if (newobj == undefined) {
newobj = new factory();
}
return newobj;
}
//创建对象的实例
function factory() {
//对象的封装
this.name = "";
this.sex = "";
this.sleep = function () {
}
}
return {
getObj: getobj
}
})();
console.log(obj.getObj());
3.构造模式
构造模式:通过new一个类来创建一个实例。
function SayHello(name){
this.name=name;
this.say=function(){
alert("Hello"+this.name)
};
}
var p1=new SayHello("张三");
p1.say();//类都是函数数据类型的
//console.log(typeof CreateJsPerson);//-->"function"
//类创建出来的实例都是对象数据类型的
//console.log(typeof p1);//-->"object"
4.原型模式
function person() {
}
person.prototype.sleep = function () {
return "睡觉";
}
person.prototype.name = "张三";
var p = new person();
console.log(p);
var p1 = new person();
console.log(p1);
5.构造模式+原型模式
function f1() {
this.name = "毛豆"
}
f1.prototype.sleep = function () {
return "睡觉"
}
var f = new f1();
console.log(f);