javascript 单体模式
单体:
来划分命名空间
将一批相关的方法和属性组织在一起的对象
只能被实例化一次.
单体分为四种:
- 普通单体
var person = {
name:"普通单体",
getName:function () {
return this.name;
}
}
console.log(person.getName(),person.name);
- 有局部变量的单体
var person = function () {
//定义私有变量和方法
var _name = "局部名";
var _age = "2";
/*
* 可以对次有变量进行处理
* 或是对ajax获得数据赋值,处理
* */
return {
name:_name,
age:_age
}
}();
console.log(person.name);
- 惰性单体
var person = function () {
var instance;
function init() {
//定义私有变量和方法
var _name = "局部名";
var _age = "2";
/*
* 可以对次有变量进行处理
* 或是对ajax获得数据赋值,处理
* */
return {
name:_name,
age:_age
}
}
return {
getInstance:function () {
console.log(instance);
if(!instance){
instance = init();
};
return instance;
}
}
}();
console.log(person.getInstance().name);
console.log(person.getInstance().age);
- 分支单体
var person = function (type) {
//也可以使用if
switch (type){
case 1:
person = {
name:'1101'
};
break;
case 2:
person ={
name :'1102'
};
break;
default:
person = {
name:'1100'
}
}
return person;
};
console.log(person(1).name);