js单例模式

一.单例模式


特点:Singleton不同与静态类(或对象)因为我们可以推迟他们的初始化,这通常是因为它们需要一些信息,而这些信息在初始化期间可能无法获得,这不同与程序一开始就初始化的模块模式。

======方法一============================
这里写图片描述

    function Universe() {
        //缓存实例对象
        var instance;
        //赋给新的构造函数函数
        Universe = function () {
            return instance;
        }
        //保留原型属性
        Universe.prototype=this;
        //创建实例对象    var people1=new Universe();
        instance = new Universe();
        //重置构造函数指针(这里instance.constructor指向的是原始的Universe构造函数)
        instance.constructor=Universe;
        //功能:
        instance.func1=function(){};
        instance.func2=function(){};
        instance.func3=function(){};
        instance.func4=function(){};
        return instance;
    }


//调用:
    var people1=new Universe();
    var people2=new Universe();
    console.log(people1===people2)    //true

=====方法二==============================

//该方法相当于动态的创建了一个模块模式
var mySingleton=(function(){
    var instance;
    function init(){
        //私有方法
        function privateMethod(){}
        return{
            //公共方法和变量
            publicMethod:function(){},
            publicProperty:'l am also puliv'
        }
    }
    return {
        getInstance:function(){
            if(!instance){
                instance=init();
            }
            return instance;
        }
    }   
})();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值