Skip to content

Latest commit

 

History

History
89 lines (62 loc) · 1.44 KB

javascript单例模式.md

File metadata and controls

89 lines (62 loc) · 1.44 KB

单例模式

###什么是单例模式?

利用私有构造函数来保证只有一个实例,使不同的地方调用同一个实例对象。

###单例模式的例子:

    var Useless = {
         name: "useless",
         age: function() {
           console.log("secret!");
         }
    };
    Useless.age();

###闭包实现私有成员的单例模式例子:

	var Ellyliang = (function() {
		var name = "useLess",
		    age  = function() {
		    	console.log("secret!");
		    };

		return {
			getName: function() {
				return name;
			},
			getAge: function() {
				age();
			}
		}
	})();
	Ellyliang.getName();
	Ellyliang.getAge();

###闭包实现私有成员的惰性实例化单例模式:

 	var Ellyliang = (function() {
		var name = "useLess",
			age = function() {
				console.log("secret!");
			};

		var obj = {
			getName: function(){
				return name;
			},
			getAge: function(){
				age();
			}
		};

		function init(){
			return obj;
		}

		return {
			getInstace: init
		};
	})();

	Ellyliang.getInstace().getAge();
	Ellyliang.getInstace().getAge();

NOTE: 适用场景-> 必须加载大量数据的单体知道需要使用它的时候才实例化。

###笔记链接: