<!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>