jQuery学习(一)

来源:互联网 发布:普联软件 编辑:程序博客网 时间:2024/06/07 07:25

一、前言

     自从找到工作以后,已经放松了半个月,即不想写论文,也不想倒腾前端的内容,日子就这样一天天的虚度过去了,每天晚上睡觉前有种负罪感,过度的放松对码农也是一种折磨。重整思绪,还是从自己最感兴趣的地方着手吧。以jquery1.8.3为研究对象。

二、jquery的整体结构 

(function(window,undefined){     1.jquery对象的定义 1行-917行        2.deffered  919行- 1242行    ...    window.jQuery = window.$ = jQuery;    })(window)

三、学到的内容

3.1 js封装--自调用的匿名函数的使用

    在面向对象里面,封装是很重要的一个特性,可以解决命名冲突、变量安全性等方面的问题。而在js中是以函数作为划分作用域的单元,里面没有块作用域这样一个概念,也就是:   

var a = 2;if(true){     var a = 3;}
alert( a ) // 3;
    所以为了实现框架的封装,需要将整个代码放到一个自调用的匿名函数里面,保护里面的变量,从而避免命名冲突的问题。然后将jquery对象挂到window对象下面,把对象暴露出来,进而供外部使用。

   3.2、作用域问题   

(function(window,undefined){})(window)
   看着这种写法的时候,觉得很奇怪,作为全局对象的window对象,还有必要作为参数传递进去吗?这样做有什么好处呢?后来想想这样写可以缩短作用域的长度,提高变量的查询效率:众所周知,作用域链指向变量对象,并且在变量查找的时候决定了查找的次序:本地变量对象-->外部变量对象-->...-->全局变量对象。所以这样写也是提高性能的一个小点。