Jquery和Javascript 实际项目中写法基础-闭包 ,2
一.什么是闭包?
概念性的我就不去百度了,感兴趣的可以自己去搜下,我自己的理解,闭包就是一个封装的包,相当于类的概念,把乱七八糟的的东西封装到一起,然后统一使用一个对象来调用,实现代码部分对外开放,部分隐藏的作用,就比如很多好用的js jquery 插件,为什么一行代码就可以使用了? 因为往往我们不会去关心实现,而只想知道怎么用,本文仅仅对于这个概念做一个简单的阐述,有兴趣的可以自己自由发挥。 0.0
代码如下:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <script type="text/javascript" src="js/jquery-1.11.0.js" ></script> <script type="text/javascript"> (function(){ //这个一个空的闭包 })(); </script> <title></title> </head> <body> </body> </html>
简单的用法如下:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <script type="text/javascript" src="js/jquery-1.11.0.js" ></script> <script type="text/javascript"> (function(){ //自定义方法 var showMessage=function(para){ alert(para) }; var write=function(){ $("body").append("111111"); }; //返回一个可供调用的对象 return window.NewObj={ show:showMessage, writeHtml:write }; })(); $(function(){ NewObj.show("调用了闭包中的方法"); }); </script> <title></title> </head> <body> </body> </html>
这样就完成了一个简单闭包的封装,那么把它放到对应的js文件,就可以做成一个公共的js 来使用了
如下:
/*ToolHelper * 对象定义内容如下 * AsyncAjax ajax 异步请求 * CommonAjax ajax 同步请求 * SetCookie 创建cookie * GetCookie 读取cookie * DelCookie 删除cookie */ (function(){ var asyncAjax=function(url,para,callback,options){ $.ajax({ url:url, data:para, dataType:"json", success:function(data){ console.log(JSON.stringify(data[0])); callback(data,options); } }); }; var commonAjax=function(url,para,callback,options){ $.ajax({ url:url, data:para, type:"GET", async:false, dataType: "json", success:function(data){ console.log(JSON.stringify(data[0])); callback(data,options); } }); }; var writeCookie = function(key,value) { //html5 本地存储,这个为内置方法 localStorage.setItem(key,value); }; var getCookie = function(key) { //html5 本地存储,这个为内置方法 return localStorage.getItem(key); } var delCookie=function(key){ localStorage.removeItem(key); }; var getQueryStr = function(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); var r = location.search.substr(1).match(reg); if (r != null) return unescape(decodeURI(r[2])); return null; }; return ToolHelper={ AsyncAjax:asyncAjax, CommonAjax:commonAjax, SetCookie:writeCookie, GetCookie:getCookie, DelCookie:delCookie, GetQueryString:getQueryStr }; })();
//可以看到文中定义了一个工具对象,封装了一些简单的方法,个人认为ajax 不需要封装什么东西,直接调用即可。