JS单例模式

来源:岁月联盟 编辑:exp 时间:2012-04-24
[javascript]
var SingletonTester = (function () { 
 
    //参数:传递给单例的一个参数集合 
    function Singleton(args) { 
 
        //设置args变量为接收的参数或者为空(如果没有提供的话) 
        var args = args || {}; 
        //设置name参数 
        this.name = 'SingletonTester'; 
        //设置pointX的值 
        this.pointX = args.pointX || 6; //从接收的参数里获取,或者设置为默认值 
        //设置pointY的值 www.2cto.com  
        this.pointY = args.pointY || 10; 
 
    } 
 
    //实例容器 
    var instance; 
 
    var _static = { 
        name: 'SingletonTester', 
 
        //获取实例的方法 
        //返回Singleton的实例 
        getInstance: function (args) { 
            if (instance === undefined) { 
                instance = new Singleton(args); 
            } 
            return instance; 
        } 
    }; 
    return _static; 
})(); 
 
var singletonTest = SingletonTester.getInstance({ pointX: 5 }); 
console.log(singletonTest.pointX); // 输出 5  



摘自 PainsOnline的专栏