zoukankan      html  css  js  c++  java
  • Javascript实现单例模式

    一般情况下,Javascript每次new一个对象就产生一个实例,实例指向不同的地址。就像如下:

    (function(){
        function Person(name){
            this.name = name;
        }
        
        Person.prototype.work = function(){
            console.log(this.name + " is working");
        }
        
        var p1 = new Person("Darren");
        p1.work();
        
        var p2 = new Person("Jack");
        p2.work();
    }());

    以上,每次new出一个Person对象都是不同的。

    如何在Javascript中实现单例模式呢?

    --在生成某各对象时先判断是否存在。存在就不生成对象,不存在就生成对象。

    (function(){
        var PersonSingleton = (function(){
            var instance;
            
            function init(){
                return {
                    name: 'Anonymous',
                    work: function(){
                        console.log(this.name + ' working');
                    }
                };
            }
            
            return {
                getInstance: function(){
                    if(!instantiated){
                        instantiated = init();
                    }
                    return instantiated;
                }
            }
        })();
        
        var p1 = PersonSingleton.getInstance();
        p1.work();
        
        var p2 = PersonSingleton.getInstance();
        p2.work();
        
    }());

    以上,通过PsonSIngleton对象的getInstance方法得到的实例每次都是一样的。

  • 相关阅读:
    nginx基础系列
    常用MS-SQL写法整理
    Spring Bean装配方式
    sql获取该周的开始结束日期
    Docker基础入门实践
    vim常规操作
    基于CentOS的SSHD服务的Docker镜像
    RedisClient For .Net
    Redis数据类型及使用场景
    CentOS下安装Redis
  • 原文地址:https://www.cnblogs.com/darrenji/p/5154040.html
Copyright © 2011-2022 走看看