javascript 单例模式

1、单例模式例子

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



2、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)



3、单例模式 与 闭包

在以上两个例子中方法内部的方法其实就是闭包,由于他们劫持了函数的内部变量,达到了访问函数内部变量的效果 javascript

4、单例的必要性

一、咱们能够很容易理解单例在Java、c++等语言中的做用,由于他们处理的是后台逻辑,但不要忘了javascript也是能够处理后台逻辑的,好比nodejs,在处理数据库链接等问题的时候咱们须要用到单例 java

二、哪怕是在前台也是很须要用到单例模式的,好比处理ajax清楚的xmlhttp request对象 node

三、 c++

在 JavaScript 中,单例可以让您保证命名空间对象和函数井井有理,防止它们与全局命名空间混淆,您可能明白,这是一种可怕的想法,特别是在使用第三方代码的状况下。 使用命名空间单例模式也被称为模块设计模式。
相关文章
相关标签/搜索