JavaScript设计模式——单例模式

单例模式

单例就是保证一个类只有一个实例,实现的方法一般是先判断实例是否存在,如果存在直接返回,如果不存在久创建了再返回,这就保证了一个类只有一个实例对象。在JavaScript里,单例作为一个命名空间提供者,从全局命名空间里提供一个唯一的访问点来访问该对象。


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

模式作用:

1.模块间通信

2.系统中某个类的对象只能存在一个

3.保护自己属性和方法

注意事项:

1.注意this 的使用(谁调指向谁)

2.闭包容易造成内存泄漏,不需要的赶快干掉

3.注意new的成本(继承)


单例模式代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>index</title>
</head>
<body>
<script>
    var xiaowang = (function (argument) {
        var xiaowangjia = function (message) {
            this.menling = message;
        };
        var men;
        var info = {
            sendMessage:function (message) {
                if(!men){
                    men = new xiaowangjia(message);
                }
                return men;
            }
        };
        return info;
    })();
    var xiaoli = {
        callXiaowang:function (msg) {
            var _xw = xiaowang.sendMessage(msg);
            alert(_xw.menling);
            _xw = null;//回收
        }
    };
    xiaoli.callXiaowang('didi');
</script>

<script>
    //页面上6个按钮
    //a b c => top
    //d e f => banner
    var top = {
        init:function () {
            this.render();
            this.bind();
        },
        a:4,
        render:function () {
                var me = this; //top
                me.btna = $("#a");
        },
        bind:function () {
            var me = this;
            me.btna.click(function () {
                me.test();
            });
        },
        test:function () {
            a = 5;
        }
    };
    var banner = {
        init:function () {
            this.render();
            this.bind();
        },
        a:4,
        render:function () {
            var me = this; //top
            me.btna = $("#d");
        },
        bind:function () {
            var me = this;
            me.btna.click(function () {
                me.test();
            });
        },
        test:function () {
            //a = 6;
            top.a = 6;
        }
    };
    top.init();
    banner.init();
</script>
</body>
</html>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值