一、单例模式例子
var instantiated;
var Singleton = function () {
var name = "fengshu";
function init() {
return {
publicMethod: function () {
console.log('hello world');
},
test: 1
};
}
if (!instantiated) {
instantiated = init();
}
return instantiated;
};
//undefined 方法里面的变量为局部变量,只能在方法内部使用
console.log(Singleton.name);
var single = new Singleton();
console.log(single.test)
var single2 = new Singleton();
//true 单例
console.log(single === single2);
二、javascript中的共有属性、共有方法、私有属性私有方法
var Person=function () {
//公有属性
this.name="fengshu";
//私有属性
var age = 23;
//私有方法
var calAge=function(){
return this.age;
}
//公有方法
this.getAge=function(){
return calAge();
}
}
var person=new Person();
console.log(person)
三、单例模式 与 闭包
在以上两个例子中方法内部的方法其实就是闭包,因为他们劫持了函数的内部变量,达到了访问函数内部变量的效果
四、单例的必要性
1、我们可以很容易理解单例在Java、c++等语言中的作用,因为他们处理的是后台逻辑,但不要忘了javascript也是可以处理后台逻辑的,比如nodejs,在处理数据库连接等问题的时候我们需要用到单例
2、哪怕是在前台也是很需要用到单例模式的,比如处理ajax清楚的xmlhttp request对象
3、
在 JavaScript 中,单例可让您保证命名空间对象和函数井然有序,防止它们与全局命名空间混淆,您可能明白,这是一种可怕的想法,特别是在使用第三方代码的情况下。 使用命名空间单例模式也被称为模块设计模式。
来源:oschina
链接:https://my.oschina.net/u/1265394/blog/266654