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 中,單例可以讓您保證命名空間對象和函數井井有理,防止它們與全局命名空間混淆,您可能明白,這是一種可怕的想法,特別是在使用第三方代碼的狀況下。 使用命名空間單例模式也被稱爲模塊設計模式。
相關文章
相關標籤/搜索