js单例模式

保证一个类只有一个实例,并提供一个访问它的全局访问点

实现

静态方法实现

js 复制代码
class SingleTon{

  

    //全局的访问点

    static getInstance(){

        // 保证一个类只有一个实例

        if(!this.instance)

        {

            this.instance=new SingleTon()

        }

        return this.instance

    }

  
  

}

  

let a=SingleTon.getInstance()

let b=SingleTon.getInstance()

  

console.log(a==b); //true

闭包实现

js 复制代码
  

//2.闭包实现

function SingleTonBase(name)

{

    this.name=name

    console.log("构造函数::",name);

}

function getInstance()

{

    let instance = null;

    return function(name){

        if(!instance)

        {

            instance = new SingleTonBase(name)

        }

        return instance

    }

}

  
  

let SingleTon=getInstance()

  

let a=SingleTon("aaaa")

let b=SingleTon("bbb")

//构造函数:: aaaa

console.log(a==b); //true

Pinia中的单例模式

在Pinia中,单例模式的实现是通过defineStore函数来完成的。

这个函数接受一个唯一的字符串作为参数,用于标识store。 当defineStore函数被调用时,它会执行以下步骤:

  1. 首先,defineStore函数会检查是否已经存在一个具有相同标识的store实例。如果已经存在,则直接返回该实例。
  2. 如果不存在,则defineStore函数会创建一个新的store实例。这个实例是一个单例对象,在整个应用程序中是唯一的。
  3. 接下来,defineStore函数会为store实例添加一些属性和方法,例如stateactionsgetters等。这些属性和方法用于定义store的状态、行为和计算属性。
  4. 最后,defineStore函数会返回新创建的store实例。 通过这种方式,Pinia能够在整个应用程序中共享状态,并且保证了状态的一致性和可预测性。同时,单例模式也使得状态的管理更加简单和易于维护。
相关推荐
「QT(C++)开发工程师」6 小时前
C++ 11 常用for循环
开发语言·c++
我还记得那天7 小时前
0 初识C++
开发语言·c++
FfHUCisI7 小时前
Go 编译过程全景
开发语言·后端·golang
FfHUCisI7 小时前
Golang 语法分析与 AST:Parser 与 go/ast
开发语言·后端·golang
Csvn8 小时前
原型链、this 与闭包内存:三座深水区一次打通(含内存泄漏排查实战)
前端·javascript
lemon_sjdk8 小时前
ObjectProperty
java·开发语言·算法
大模型码小白8 小时前
Spring AI Tool 实现自然语言操作 MySQL 数据库详解
服务器·开发语言·数据库·人工智能·python·mysql·spring
hh9508 小时前
Agent Plan x DeepSeek Harness:Agent 供应链安全与第三方插件审计
java·开发语言·安全·agent plan·adg成都社区·adg社区
万维易源8 小时前
趣味项目素材|免费脑筋急转弯查询接口实战接入教程
javascript·免费api·脑筋急转弯查询·脑筋急转弯接口