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能够在整个应用程序中共享状态,并且保证了状态的一致性和可预测性。同时,单例模式也使得状态的管理更加简单和易于维护。
相关推荐
孟浩浩1 小时前
JAVA SpringAI+阿里云百炼应用开发
java·开发语言·阿里云
碧蓝的水壶2 小时前
数据转换过程
java·开发语言·windows
2501_947575808 小时前
计算机毕业设计之jsp开山车行二手车交易系统
java·开发语言·hadoop·python·信息可视化·django·课程设计
骑士雄师8 小时前
java面试题 4:鉴权
java·开发语言
时间的拾荒人9 小时前
C语言字符函数与字符串函数完全指南
c语言·开发语言
2501_948106919 小时前
计算机毕业设计之基于jsp教科研信息共享系统
java·开发语言·信息可视化·spark·课程设计
取经蜗牛10 小时前
Python 第一阶段完全指南:从零到第一个实用工具
开发语言·python
anOnion10 小时前
Agentic 前端开发之 实时显示 AI Agent 终端输出
前端·javascript·人工智能
dog25010 小时前
从重尾到截断流量模型的演进
开发语言·php
这是个栗子10 小时前
【前端性能优化】优化数据加载:用 Promise.all 从串行到并行
前端·javascript·性能优化·异步编程·前端优化·promise.all