【设计模式】单例模式
<h3>单例模式</h3>
<hr />
<p>单例模式的核心是确保只有一个实例,并提供全局访问。</p>
<pre><code>var Singleton = function (name) {
this.name = name;
};
Singleton.prototype.getName = function () {
alert(this.name);
};
Singleton.getInstance = (function () {
var instance = null;
return function (name) {
if (!instance) {
instance = new Singleton(name);
}
return instance;
}
})();
var a = Singleton.getInstance( 'sven1' );
var b = Singleton.getInstance( 'sven2' );
console.log(a)
//[object Object] {
// getName: function () {
// alert(this.name);
//},
// name: "sven1"
//}
console.log(b)
alert ( a === b ); // true</code></pre>
<h3>Js设计模式</h3>
<h4>单例模式</h4>
<hr />
<p>管理单例模式和创建实例对象</p>
<pre><code>//管理单例模式
var getSingle = function(fn){
var result;
return function(){
return result || (result = fn.apply(this,arguments))
}
}
//创建实例对象
var createLoginLayer = function(){
var div = document.createElement( 'div' );
div.innerHTML = '我是登录浮窗';
div.style.display = 'none';
document.body.appendChild( div );
return div;
};
var createSingleLoginLayer = getSingle( createLoginLayer );
document.getElementById( 'loginBtn' ).onclick = function(){
var loginLayer = createSingleLoginLayer();
loginLayer.style.display = 'block';
};</code></pre>