<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>

		<script>
		     /*单例模式 就是方便 模块间的相互调用*/
			// 外层函数只是为了自动执行,创建函数实例
			var xw = (function xiaoWang() {
				//创建类方法
				var sendMessage = function() {
					var infoClass = {
						setLian: function() {
							this.lian = "大脸";
							return this;
						},
						setZui: function() {
							this.zui = "大嘴";
							return this;
						}
					}
					return infoClass;
				}
				//创建实例,info这是暴露在外面的,相当于OBJECT-C中的static类变量
				var info = {
					createInstance: function() {
						var singleInstance = null;
						if (!singleInstance) {
							singleInstance = new sendMessage();
						}
						return singleInstance;
					}
				}
				return info;
			})();
			(function xiaoLi() {
				msg = xw.createInstance().setLian().setZui();
				console.log(msg);
				msg = null;
			}());
		</script>
	</head>

	<body>
		<button id="btna">按钮a</button>
		<button id="btnb">按钮b</button>
		<script>
			/*-------------单例模式也可以是 两个全局变量-----------*/
			var aInstance = {
				init: function() {
					this.render();
					this.binder();
				},
				a: 4,
				render: function() {
					var me = this;
					me.btna = $('#btna');
				},
				binder: function() {
					var me = this;
					me.btna.click(function() {
						me.test();
					});
				},
				test: function() {
					bInstance.b = 8;
					console.log(bInstance);
				}
			}
			
			
			var bInstance = {
				init: function() {
					this.render();
					this.binder();
				},
				b: 4,
				render: function() {
					var me = this;
					me.btnb = $('#btnb');
				},
				binder: function() {
					var me = this;
					me.btnb.on('click', (function() {
						me.test();
					}));
				},
				test: function() {
					aInstance.a = 7;
					console.log(aInstance);
				}
			}
			aInstance.init();
			bInstance.init();
		</script>
	</body>

</html>