javascript 单例模式

最后都变了- 提交于 2019-11-29 12:32:09

一、单例模式例子

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 中,单例可让您保证命名空间对象和函数井然有序,防止它们与全局命名空间混淆,您可能明白,这是一种可怕的想法,特别是在使用第三方代码的情况下。 使用命名空间单例模式也被称为模块设计模式。



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!