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方法得到的实例每次都是一样的。

  • 相关阅读:
    iTerm2 颜色配置
    IOS_问题: Xcode8 安装KSImageName插件, 编代码就崩了
    IOS_设置启动图片若干问题
    Android 多国语言
    Reveal 配置与使用
    自定义代码块
    Android 动画
    SQL
    dialog
    2016-1-18UIlabel学习,正则表达式
  • 原文地址:https://www.cnblogs.com/darrenji/p/5154040.html
Copyright © 2011-2022 走看看