JavaScript单例模式详解:概念、作用与实战代码

作者:青柠

时间:2026-10-22

浏览:189

本文详解JavaScript中的单例模式,阐述其确保类仅有一个实例的核心概念。分析模块通信、对象唯一性及属性保护等作用,并重点提醒this关键字使用、闭包内存泄漏及new实例化成本等注意事项。附带完整HTML/JS代码示例,帮助开发者掌握单例模式的实际应用。

文章目录

本文通过具体实例介绍JavaScript中的单例模式,供读者参考学习。

一、单例模式概念

单例模式的核心在于确保一个类仅存在一个实例。其实现逻辑通常是:先检查实例是否已存在,若存在则直接返回该实例;若不存在,则创建新实例并返回。这种方式保证了类的全局唯一性。在JavaScript中,单例常作为命名空间提供者,从全局命名空间中提供唯一的访问入口。

二、单例模式的作用和注意事项

该模式的主要作用包括:

1、实现模块间通信

2、确保系统中某个类的对象只能存在一个

3、封装并保护内部的属性和方法

使用时需注意以下事项:

1、注意this的使用

2、闭包容易导致内存泄露,对于不再需要的引用应及时清除

3、注意new的成本。(继承)

三、单例模式代码和实战总结


<!DOCTYPE html>
<html>
<head lang="en">
  <meta charset="UTF-8">
  <title>单例模式</title>
</head>
<body>
<!--<script>
  var Singleton = (function(){
    var instantiated;
    function init(){
      /*这里定义单例代码*/
      return{
        publicMethod:function(){
          console.log("hello world");
        },
        publicProperty:"test"
      };
    }
    return{
      getInstance:function(){
        if(!instantiated){
          instantiated = init();
        }
        return instantiated;
      }
    }
  })();
  Singleton.getInstance().publicMethod();
</script>-->
<script>
   /*1.独立的对象 建2个一个xiaowang一个xiaoli
   2.让xiaoli跟xiaowang通过门铃进行通信
   3.先看一下xiaowang家有没有门 如果油门直接通过门铃通讯didi如果没有门先建门
   4.两个单例之间看是通讯*/
  var xiaowang = (function(argument){
    var men;
    var xiaowangjia = function(msg){
      this.menling = msg;
    }
    var info = {
      sendMessage:function(msg){
        if(!men){
          men = new xiaowangjia(msg);
        }
        return men;
      },
      abc:function(){
        return 123;
      }
    };
    return info;
  })();
  var xiaoli = {
    callXiaowang:function(msg){
      var _xw = xiaowang.sendMessage(msg);
      alert(_xw.menling);
      console.log(_xw.menling);
      _xw = null;//等待垃圾回收
      var abc = xiaowang.abc();
      console.log(abc);
    }
  }
  xiaoli.callXiaowang("didi");
</script>
</body>
</html>

可使用在线HTML/CSS/JavaScript代码运行工具 http://tools.jb51.net/code/HtmlJsRun 测试运行效果如下:

一、单例模式概念

一、单例模式概念

更多关于JavaScript相关内容可查看本站专题:《javascript面向对象入门教程》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章