日期:2014-05-16  浏览次数:20437 次

Javascript带有私有属性的单例模式
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    </head>
    <body>
        <script>
        	var singleton = (function(){
			    var unique;
			    return {
			    	getinstance: function (){
				        if(!unique){
				            unique = construct();
				        }
				        return unique;
				    }
			    }
			    function construct(){
			        var _firstname, _lastname;
			        function _getFullName(){
			        	return _lastname + ' ' + _firstname;
			        }
			        return {
			            showFullName: function(){
			            	alert(_getFullName());
			            },
			            setFirstName: function(firstname){
			            	_firstname = firstname;
			            },
			            setLastName: function(lastname){
			            	_lastname = lastname;
			            }
			        };
			    }
			})();
			var ins1 = singleton.getinstance(),
				ins2 = singleton.getinstance();
			alert(ins1 === ins2);
			ins1.setLastName('王');
			ins1.setFirstName('强');
			ins1.showFullName();
			ins2.showFullName();
        </script>
    </body>
</html>