• 喜欢前端以及PHP的朋友们可以加PHP同好会QQ群 点击加入qq群
  • 最近在写一个项目---"小A微信托管平台",大家可以去帮忙测试一下!功能在不断完善中,敬请关注!点击进入
  • 本站使用了PHP8.1与HTTP2.0协议,速度简直超级快有木有?

javascript设计模式之惰性单例

前端 Mr.Adam 8年前 (2017-03-30) 2209次浏览 已收录 0个评论

javascript 设计模式之惰性单例

javascript 设计模式之惰性单例

首先看代码

var getSingle = function(fn){
    var result;
    return function(){
        return result || (result = fn.apply(this,arguments));
    }
};

在这里,我们可以将我们想使用单例的方法用参数 fn 的形式传入 getSingle 中,之后再让 getSingle 函数返回一个新函数,并且用一个变量 result 来保存 fn 的计算结果,因为 result 变量在闭包中,永远不会被销毁,在将来的请求中,如果 result 已经被赋值,那么它将返回这个值.
以下是实现一个点击按钮创建并显示悬浮窗的 demo.

var createLayer = function(){
	var div = document.createElement("div");
	div.innerHTML = "提示信息";
	div.style.display = "none";
	document.body.appendChild(div);
	return div;
}

var createSingleLayer = getSingle(createLayer);

document.getElementById("btn").onclick = function(){
	var Layer = createSingleLayer();
	Layer.style.display = "block";
}

那么不论点击几次,该 div 只会被创建一次.


小 A 空间 , 版权所有丨如未注明转载 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明javascript 设计模式之惰性单例
喜欢 (1)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址