重返jQuery(3)-函数

javascript的作用域是函数体,所有的操作都离不开函数。与函数有关的问题我想说的是三个感受,这三点是js所共有的,并不是jquery或前端开发独有的。在js做服务器的后端道理是一样的。

1.jquery是基于事件触发的。这很好理解,在web或者手机端都会用键盘,鼠标,触摸事件。这些事件是UI交互的基础。但是这里有个问题,事件交互时效性怎么保证呢?万一有一天NASA要开发一个APP安装在一个飞船上,保证10000000000000年以后,地外文明还可以使用怎么办? JavaScript通过回调函数,其实就是闭包来让这些交互事件放到页面上,不论你什么时候去操作,程序都可以响应。关于闭包看可以看重返jquery(1).

//比如下面这个函数,$(document).ready(),是外层函数
//function(){}这个是内层函数。通过这种方式形成一个闭包函数。
//这个结构,只要你不关掉网页,$("#switcher h3")可以一直恭候你的点击
$(document).ready(function() {
     $('#switcher h3').click(function() {
          $('#switcher button').toggleClass('hidden'); });
});
   ```

jquery中的闭包可以形成很多的闭包,怎么形容呢?看看下面这打地鼠的图


![th.jpeg](http://upload-images.jianshu.io/upload_images/2044710-4f3db2cb887bfa36.jpeg?imageMogr2/auto-orient/strip%7CimageView2/2/w/320)

闭包出现是在js变量回收机制前提下,对抗变量垃圾回收的一种解决办法。闭包函数可以一直保持变量状态,所以只要计算机还工作,web线程没关闭,这些闭包函数可以一直存在。 为了应对复杂的应用我们可以在页面中建很多闭包,就像打地鼠图中的地洞一样。一旦建好,虽然不知道什么时候那个洞会用上,但是他们会一直存在,等候你去打。事件响应机制是由闭包支持的。所以在jquery中闭包无处不在。

2.js单线程非阻塞机制。

javascript是单线程的,非阻塞的。这个概念困扰我很长时间。但是等我了解以后就发现这个机制其实很高明,效率大多数情况下都很高。
下面是我在另外一篇文章中对着问题的通俗解释
>js由于是单线程的模式,相当是一个饭馆只请了一个小二,这小二要负责所有用户的点餐,送餐和收钱的工作。所以不能在一个用户定了餐以后他就什么事也不干,等着饭好以后送给第一个客户,这样的模式下实际上主要的等待时间是等饭的准备,非常耗时间,在第一个客户订餐以后,小二记录下用户座位号码和点餐内容以后就可以去服务其他的顾客。当第一个客户的餐准备好了以后,恰好这时小二手头又没有其他工作的时候,他就会把第一个顾客的餐根据记录的座位号码送到顾客手中。当然第一个顾客先定,但是他可能不是第一个拿到餐,如果他定了一个比较耗时间的餐,比如红烧排骨,这个做起来比较复杂,第二个顾客定里一个凉拌黄瓜,这个简单,所以第二个顾客可能会先拿到凉拌黄瓜。

javascript就是用这个原理来解决单线程的效率问题。人还是一个人,但是在阻塞和非阻塞的情况下效率会差很多。 jquery中的回调函数就是解决这问题。 第一步相应事件-然后排队-第二步处理事件。

可以这么说:回调函数是jquery的灵魂。

3  jquery中的链式调用
jquery中的链式调用是效率非常高的方法。一开始尽管也可以用,但是还是不是太明白为什么可以这样操作。js的函数有个特点,在一个js函数调用的时候,总会附着(绑定)在一个对象上,关于这一点有点负杂,也是解开javascript this这个关键字的关键😀。我在下一篇会讲这个问题。  首先不管是绑定在哪个对象上,我们在jQuery中使用链式操作时要把链式操作的方法指向同一个对象。 那么怎么指向同一对象? 就用this这个关键字。 this的定义就是当前函数绑定的那个对象。那么好办了,我们只要在每个函数中都返货这个对象 
 var func= function(){
      return this;
 } 
这样后一个函数获得的对象就是前一个函数return 出来的this对象,这个对象是谁不重要。前后函数指向同一个对象的目的就达到了。


以上是我对jquery函数的一点理解。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,172评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,346评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,788评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,299评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,409评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,467评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,476评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,262评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,699评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,994评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,167评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,499评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,149评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,387评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,028评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,055评论 2 352

推荐阅读更多精彩内容

  • 在线阅读 http://interview.poetries.top[http://interview.poetr...
    程序员poetry阅读 114,335评论 24 450
  • 1.JQuery 基础 改变web开发人员创造搞交互性界面的方式。设计者无需花费时间纠缠JS复杂的高级特性。 1....
    LaBaby_阅读 1,168评论 0 1
  • 1.JQuery 基础 改变web开发人员创造搞交互性界面的方式。设计者无需花费时间纠缠JS复杂的高级特性。 1....
    LaBaby_阅读 1,332评论 0 2
  • 原文链接 http://blog.poetries.top/2016/10/20/review-jQuery 关注...
    程序员poetry阅读 16,642评论 18 503
  • 请参看我github中的wiki,不定期更新。https://github.com/ivonzhang/Front...
    zhangivon阅读 7,123评论 2 19