javaScript的设计模式之单例模式

1.何为js的单例模式?


2.单例模式的作用和注意事项:


3.代码示例:

<script type="application/javascript">
$(document).ready(function(){
    //1.建两个独立的对象,jason,jerry;
    //2.让jerry与jason通过门铃进行通讯;
    //3.先看jason家有没有门,如果有门直接通过门铃通讯didi,如果没有,先建门
    //4.两个单例之间开始通讯

    /*立即型function对象jason*/
    var jason=(function(){
        var jason_home=function(message){
            this.menling=message;
        }
        var men;
        var info={
            sendMessage:function(message){
                if(!men){
                    men=new jason_home(message);
                }
                return men;
            }
        }
        return info;
    })();

    /*object对象jerry*/
    var jerry={
        callJason:function(msg){
            var _jason=jason.sendMessage(msg);
            alert(_jason.menling);
            _jason=null;//等待垃圾回收
        }
    };
    jerry.callJason("dingdong");

})
</script>


js实际开发中常用单例来作为命名空间:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>单例设计模式的代码实战</title>
    <script src="js/jquery-2.1.3.min.js"></script>
</head>
<body>
<button id="a">a</button>
<button id="b">b</button>
<button id="c">c</button>
<button id="d">d</button>
<button id="e">e</button>
<button id="f">f</button>
<script type="application/javascript">
$(document).ready(function(){
    //建立按钮a、b、c的命名空间top
    var top={
        init:function(){
            this.render();
            this.bind();
        },
        a:4,
        render:function(){
            var me=this;
            me.btna=$("#a");
        },
        bind:function(){
            var me=this;
            me.btna.click(function(){
                //将业务逻辑取出去
                me.test();
            });
        },
        test:function(){
            a=5;
            alert(a);
        }
    }
    //建立按钮d、e、f的命名空间banner
    var banner={
        init:function(){
            this.render();
            this.bind();
        },
        a:4,
        render:function(){
            var me=this;
            me.btna=$("#d");
        },
        bind:function(){
            var me=this;
            me.btna.click(function(){
                //将业务逻辑取出去
                me.test();
            });
        },
        test:function(){
//            a=6;
            top.a=6;
            alert(top.a);
        }
    }
    top.init();
    banner.init();

})
</script>
</body>
</html>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值