js单例模式

一、单例模式

        单例模式就是通过单独的一个实例化对象,在调用函数方法时,输入不同的参数数据,执行对应的程序效果。

        多个对象可以优化

        原始方法:

                根据不同的数据,创建不同的实例化对象,在实例化对象中,存储不同的数据数值,函数直接调用实例化对象中的数据数值

        优化方法:

                创建实例化对象时,不设定存储数据,调用函数时,输入需要的参数,定义生成一个实例化对象,就可以执行所有需要的效果。

//原始方法

class createObj{

        constructor(name,age){

                this.name=name;

                this.age=age;

        }

        fun1(){

                console.log(this.name);

        }

        fun2(){

                console.log(this.age);

        }

        fun3(){

                console.log(this.name,this.age)

        }

}

const obj1=new createObj('张三',18);

const obj2=new createObj('李四',19);

const obj3=new createObj('王五',20);

console.log(obj1);

console.log(obj2);

console.log(obj3);

     //优化方法

class createObj(){

        constructor(){};

        fun1(name){

                console.log(name)

        };

        fun2(age){

                console.log(age);

        }

        fun3(name,age){

                console.log(name,age);

        }

}   

const obj=new createObj  ();

obj.fun1('张三');

obj.fun1('李四');

obj.fun1('王五');   

obj.fun2(18);

obj.fun2(19);

obj.fun2(20);

obj4.fun3('张三',20);

obj4.fun3('李四',21);

obj4.fun3('王五',22);

 单例模式的核心:只创建一个实例化对象,通过调用函数时输入不同的数据实现程序效果,即使多次调用构造函数,也要确保只生成一个实例化对象,不是每次调用都会生成一个新的实例化对象。

class createObj{

        constructor(){}

        fun1(name){

                console.log(name)

        }

        fun2(age){

                console.log(age)

        }

        fun3(name,age){

                console.log(name,age)

        }

}

let obj='';

function fun(){

        if(obj===' '){

                obj=new createObj();

                return obj;

        }else{

                return obj;

        }

}

const newObj1=fun();

用闭包的语法形式,将所有程序定义在函数中.

单例模式是一个固定的语法套路,变量存储的是立即执行函数的执行结果,也就是return的匿名函数。

 //使用立即执行函数,在封装函数的同时,立即执行调用函数本身

const res=(function(){

        class createObj{

                constructor(){};

                fun1(name){

                        console.log(name)

                }

                fun2(age){

                        console.log(age)

                }

                fun3(name.age){

                        console.log(name,age)

                }

        }

        let obj=' ';

        return function(){

                if(obj===' '){

                        obj=new createObj();

                        return obj;

                }else{

                        return obj;

                        }

        }

})()

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值