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能够在整个应用程序中共享状态,并且保证了状态的一致性和可预测性。同时,单例模式也使得状态的管理更加简单和易于维护。
相关推荐
小此方10 分钟前
C语言自定义变量类型结构体理论:从初见到精通(上)
c语言·开发语言
努力也学不会java16 分钟前
【Java并发】揭秘Lock体系 -- 深入理解ReentrantReadWriteLock
java·开发语言·python·机器学习
vxtkjzxt88829 分钟前
自动化脚本矩阵运营
开发语言·php
王严培.38 分钟前
7.MATLAB疑难问题诊疗的技术
开发语言·matlab·信息可视化
wjs20241 小时前
PHP MySQL 使用 ORDER BY 排序查询
开发语言
用户47949283569151 小时前
TypeScript 和 JavaScript 的 'use strict' 有啥不同
前端·javascript·typescript
爱敲代码的TOM1 小时前
深入剖析Java通信架构下的三种IO模式2
java·开发语言·架构
UWA1 小时前
Unreal开发痛点破解!GOT Online新功能:Lua全监控 + LLM内存可视化!
开发语言·lua·unreal
bubiyoushang8882 小时前
MATLAB实现直流电法和大地电磁法的一维正演计算
前端·javascript·matlab
半夏知半秋2 小时前
skynet debug_console控制台中debug指令使用
服务器·开发语言·学习·lua