一.什么是闭包?

概念性的我就不去百度了,感兴趣的可以自己去搜下,我自己的理解,闭包就是一个封装的包,相当于类的概念,把乱七八糟的的东西封装到一起,然后统一使用一个对象来调用,实现代码部分对外开放,部分隐藏的作用,就比如很多好用的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  不需要封装什么东西,直接调用即可。

Jquery和Javascript 实际项目中写法基础-闭包 (2)的更多相关文章

  1. Jquery和Javascript 实际项目中写法基础-弹出窗和弹出层 (4)

     一.实际项目中有很多如下界面效果.    二.该效果可以归结为弹出窗或者弹出层来实现的,为什么这么说?看如下代码:      <!DOCTYPE html> <html> & ...

  2. Jquery和Javascript 实际项目中写法基础 (1)

    一.JS 是什么,jquery 是什么  就不说明了,直接说一般使用是怎么样的 <!DOCTYPE html> <html> <head> <meta cha ...

  3. Jquery和Javascript 实际项目中写法基础-ajax和json (3)

    一.什么是JSON数据? 一种轻量级的数据交换格式.实际中知道如何使用即可. 软件开发我认为就是一个会用,然后知其原理的过程. 例子如下: <!DOCTYPE html> <html ...

  4. JavaScript在HTML中的基础用法总结

    网页主要由三部分组成,分别为html.CSS和Javascript.如果说HTML是肉身,CSS是皮相,那Javascript就是灵魂.因此,三者的联系与融合则至关重要.本文就来为大家讲解一下Java ...

  5. ASP.NET MVC jQuery 树插件在项目中使用方法(一)

    jsTree是一个 基于jQuery的Tree控件.支持XML,JSON,Html三种数据源.提供创建,重命名,移动,删除,拖"放节点操作.可以自己自定义创建,删 除,嵌套,重命名,选择节点 ...

  6. JQuery统一复写美化项目中所有radio单选按钮样式

    老项目要升级改版,对于分散在各页面的样式不好处理,怕有遗漏,尤其是优化input表单,修改其默认样式,接下来,我将给大家分享一下,我在项目中的总结. 效果 上代码: 1.简单搞一搞 CSS,此处代码有 ...

  7. 项目中lua(基础)

    关于项目中lua任务(某些没弄懂,但lua上耗费时间有点长了不看了) 这段时间看了lua语法和项目中lua应用 .在lua中注册c库,在lua5.2中好像都是注册c库,相当于在lua中定义一个tabl ...

  8. jQuery Validate验证(项目中使用的)

    大致结构是: <script type="text/javascript" src="<%=path %>/js/jquery-1.9.1.min.js ...

  9. NopCommerce开源项目中很基础但是很实用的C# Helper方法

    刚过了个五一,在杭州到处看房子,不知道杭州最近怎么了,杭州买房的人这么多,房价涨得太厉害,这几年翻倍翻倍地涨,刚过G20,又要亚运会,让我这样的刚需用户买不起,也买不到房子,搞得人心惶惶,太恐怖了,心 ...

随机推荐

  1. R----data.table包介绍学习

    相比dplyr包,data.table包能够更大程度地提高数据的处理速度,这里就简单介绍一下data.tale包的使用方法. data.table:用于快速处理大数据集的哦 数据的读取 data.ta ...

  2. Trasformation中的公式报错误,错误数据行定位

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  3. JavaScript为input/textarea自定义hover,focus效果

    <title>JavaScript为input/textarea自定义hover,focus效果</title> <script type="text/java ...

  4. SQL Server如何删除多余tempDB文件

    某时,创建了多个tempDB文件,已经超过了服务器核心数,现象删除tempDB文件,使其保持与CPU核心数相同.但是在删除的时候,发现无法删除,报出错误:无法删除文件“tempdev3”,因为它不能为 ...

  5. ArcGIS学习推荐

    1.  Arcgis Desktop 10帮助库 ArcGIS 系统的帮助库.该帮助库已经过编译,可为 ArcGIS 各方面的应用提供综合文档.建立该库的目的是满足以下各类主要用户的需求: GIS 专 ...

  6. NGUI Scroll List

    NGUI Scroll List 1.Add GameObject with Script UI Panel(NGUI -> UI -> NGUI Panel) and Script UI ...

  7. ReadOnly关键字修饰的变量可以修改,只是不能重新分配

    MSDN 官方的解释 readonly 关键字是可以在字段上使用的修饰符.当字段声明包括 readonly 修饰符时,该声明引入的字段赋值只能作为声明的一部分出现,或者出现在同一类的构造函数中.   ...

  8. eclipse中配置tomcat后,运行jsp时出现Server Tomcat v7.0 Server at localhost failed to start.

    最近在进行jsp开发学习,在配置上还是遇到很多问题. 在连接好数据库后,写了第一个jsp测试页面,结果在运行eclipse中运行toamcat时出现了错误提示:Server Tomcat v7.0 S ...

  9. 编程之美----NIM游戏

    : 博弈游戏·Nim游戏 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 今天我们要认识一对新朋友,Alice与Bob.Alice与Bob总是在进行各种各样的比试,今天他 ...

  10. I/O多路复用 SELECT POLL -- 内核实现

    等待队列 先补充个基础知识――等待队列 认识 定义 wait_queue_head_t wait_queue; 初始化 init_waitqueue_head(&wait_queue); 等待 ...