JavaScript使用闭包实现单例模式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JavaScript使用闭包实现单例模式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1364字,纯文字阅读大概需要2分钟。
内容图文
![JavaScript使用闭包实现单例模式](/upload/InfoBanner/zyjiaocheng/839/4c4e77a3470a4f9c8cd9685a92e94b81.jpg)
闭包是JS的一种特性,其中一点就是:可以将外部函数的变量保存在内存中,利用这一特性,我们可以用来实现类的单例模式。
首先需要了解何为单例模式:
意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
主要解决:一个全局使用的类频繁地创建与销毁。
何时使用:当您想控制实例数目,节省系统资源的时候。
如何解决:判断系统是否已经有这个单例,如果有则返回,如果没有则创建。
了解完单例模式之后,我们不难写出以下代码:
var HeadClass = function () { }; var Head = (function () { // 匿名自执行函数 var instance; // 声明一个instance对象 return function () { if (instance) { // 如果已存在 则返回instance return instance; } instance = new HeadClass() // 如果不存在 则new一个HeadClass对象 return instance; } })(); var a = new Head(); var b = new Head(); console.log(a===b) // true
我们只需要调用new Head()即可构造一个单例模式对象,但同时也可以调用new HeadClass()构造新的对象,那么我们如何加以限制,让其只能调用new Head()来构造对象呢?
其实我们只需要把HeadClass声明放入匿名自执行函数Head内即可:
var Head = (function () { var HeadClass = function () { }; // 声明HeadClass对象,无法在外部直接调用 var instance; // 声明一个instance对象 return function () { if (instance) { // 如果已存在 则返回instance return instance; } instance = new HeadClass() // 如果不存在 则new一个 return instance; } })(); var a = Head(); var b = new Head(); console.log(a===b) // true var a = HeadClass(); // 报错,HeadClass is not defined
内容总结
以上是互联网集市为您收集整理的JavaScript使用闭包实现单例模式全部内容,希望文章能够帮你解决JavaScript使用闭包实现单例模式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。