美文网首页
js单例模式

js单例模式

作者: 猪猪行天下 | 来源:发表于2023-10-28 17:17 被阅读0次

整个项目运行期间只会在使用的时候被实例化一次。在其他语言中使用私有的构造方法或初始化方法,来保证实例不会被初始化多次。但是js中是没有这种私有方式的。如何你使用了ts那么就可以私有化构造方法来实现了。

当然js可以使用其他的方式来实现同样的功能。

方式一

通过模块化的方式,导出一个实例供其他使用。

class Video {}

const video = new Video();

export {
    video
}

这样看起来整个系统只有一个实例。但是它有一个隐患,例如:

import {video} from './singleton.js';

const VideoClass = Object.getPrototypeOf(video).constructor;
const video2 = new VideoClass();
console.log(video === video2); // false

这样我们发现它被重新实例化了。

方式二

通过代理的方式:

function singleton(className) {
    let instance;
    return new Proxy(className, {
        construct(target, args) {
            if(!instance) {
                instance = Reflect.construct(target, ...args);
                // 或
                // instance = new className(target, ...args);
            }
            
            return instance;
        }
    })
}

export default singleton;

在需要设置单例的类中这样使用如下:

import singleton from "./singleton";

class Video {}

export default singleton(Video);

在其他地方使用单例如下:

const  v1 = Video();
const v2 = Video();

console.log(v1 === v2); // true

这是一种比较好用的单例模式。可以安全的在代码中使用了。

相关文章

  • 前端开发工程师必备系列-几个简单的JS单例模式

    前端开发工程师必备系列-几个简单的JS单例模式 JavaScript单例模式 1. 单例模式 单例模式(Singl...

  • 前端设计模式

    JS设计模式一:工厂模式jS设计模式二:单例模式JS设计模式三:模块模式JS设计模式四:代理模式JS设计模式五:职...

  • JavaScript-高级篇之单例模式

    单例模式 保证一个类仅有一个实例,并提供一个访问它的全局访问点 JS特色的单例模式 惰性单例

  • JS_单例模式

    JS_单例模式 什么是单例模式? 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 单例模式的优点 可以用来...

  • 【设计模式】单例模式

    单例模式 常用单例模式: 懒汉单例模式: 静态内部类单例模式: Android Application 中使用单例模式:

  • Android设计模式总结

    单例模式:饿汉单例模式://饿汉单例模式 懒汉单例模式: Double CheckLock(DCL)实现单例 Bu...

  • JS单例模式

    单例模式的定义是:保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式是一种常用的模式,有一些对象我们往...

  • js 单例模式

    为何要有单例模式书中有举出一个实际场景,当我们点击登陆按钮时,页面中可能会出现一个弹框,而这个弹框是唯一的,无论点...

  • js单例模式

    概念:单例,指的就是只有一个实例的对象 var singleton = {name: 'singleton',me...

  • js单例模式

    单例模式 单例表示只存在一个这样的对象。单例模式是一种非常重要的设计模式,有很多经典的应用场景,比如说,网站的登录...

网友评论

      本文标题:js单例模式

      本文链接:https://www.haomeiwen.com/subject/yvlmidtx.html