Javascriptはシングルモデルを実現します.

2136 ワード


一般的には、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オブジェクトのget Instance方法によって得られたインスタンスは毎回同じです.