js设计模式之 单例模式与应用场景

本文介绍了JavaScript中闭包的概念及其在模拟登录框中的运用,展示了如何使用单例模式实现登录框的显示和隐藏。同时提及了Web前端开发的学习资源,包括适合不同水平Android工程师的全套学习资料。
摘要由CSDN通过智能技术生成

//测试

let girlFriend1 = Girl.getAGirlFriend(); // 生成一个女朋友

let girlFriend2 = Girl.getAGirlFriend();// 你企图再生成 一个女朋友

//但是发现其实 生成的是同一个女朋友

//可以看看验证

console.log(girlFriend1 === girlFriend2); //打印结果为:true

可能基础不大好的同学,看到那么多括号,会感到头晕目眩的,其实这是用到了闭包的知识

,如果不用闭包的话,代码是这样的

//话不多说,赶紧找个女朋友

Girl.getAGirlFriend = function () {

let girlFriend;

return function () {

if (!girlFriend){

girlFriend = new Girl(); //恭喜你,成功脱单,生成一个女朋友成功

}else {

//你已经有女朋友啦,就不再创造了,下面返回的 还是你 的 现任

}

return girlFriend;

}

};

这样就看起来容易理解一些,但是这样会出现一个错误

就你

let girlFriend1 = Girl.getAGirlFriend(); // 生成一个女朋友

的时候,获得的是

function () {

if (!girlFriend){

girlFriend = new Girl(); //恭喜你,成功脱单,生成一个女朋友成功

}else {

//你已经有女朋友啦,就不再创造了,下面返回的 还是你 的 现任

}

return girlFriend;

}

是这个还没有执行的方法

你必须使用闭包来让这个方法自动执行。

可能没接触过闭包的同学还是难以理解,推荐可以看一下 我的另一篇文章 详解js闭包

3.应用场景

=========================================================================

3.1.模拟登录框

利用单例模式思想 来实现 登录框的 显示和隐藏

在这里插入图片描述

下面这段 是不是似曾相识的感觉

在这里插入图片描述

测试一下

let login1 = LoginForm.getInstance();

login1.show(); //打印:登录框显示成功

let login2 = LoginForm.getInstance();

login2.hide(); //打印:登录框隐藏成功

可见 ,login1 和login2 是同一个实例

可以再测试一下

let login1 = LoginForm.getInstance();

login1.show(); //打印:登录框显示成功

let login2 = LoginForm.getInstance();

login2.show(); //弹窗:已经显示

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!**

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 21
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值