js单例模式

js单例模式

  // 1.单例设计模式(最原始的模块化思想):保证一个类仅有一个实例,且提供一个访问它的全局访问点
    // 思想:新建对象时首先判断全局是否有该对象,如果有,就返回该对象,如果没有就创建一个新对象返回。
    // 方法:创建一个类,类中有一个方法可以创建该类的实例对象,还有一个标记用来判断是否已经存在实例对象,如果没有存在,调用的时候会创建实例对象,如果已经存在,则再次调用时,会返回之前已经创建好的实例对象。
    var Single=(function(){
            var instance=null;
            function Single(name){
                this.name=name;
            }
        return function(name){
            if(!instance){
                instance=new Single(name);
            }
            return instance
        }
    })();

    var a=new Single('hi');
    var b=new Single('world');
    console.log(a===b);  //a:Single {name:'hi'}, b:Single {name:'hi'}
  //第一次调用构造函数时利用闭包存储了实例对象,以后再次调用直接返回保存的实例对象

// es6写法
class Single{
    constructor(name){
        this.name=name;
        this.instance=null;
    }
// static表示该类的静态方法,不能被实例继承,只能通过该类来调用
    static getInstance(name){
        if(!this.instance){
            this.instance=new Single(name);
        }
        return this.instance
    }
}

let a=Single.getInstance('hi');
let b=Single.getInstance('nihao');
console.log(a===b); //a:Single {name: "hi", instance: null} b:Single {name: "hi", instance: null}

单例模式应用场景
任意一个网站,点击登录按钮,只会弹出有且仅有一个登录框,即使后面再点击登录按钮,也不会再弹出多一个弹框。又或者一个音乐播放程序,如果用户打开了一个音乐,又想打开一个音乐,那么之前的播放界面就会自动关闭,切换到当前的播放界面。这就是单例模式的典型应用。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哆啦咪唏

看到这里了,不留下点什么吗

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值