//1.jquery为了防止污染全局变量:把局部的变量和函数全写在了自执行函数中,闭包外面访问不了
//利用作用域链的知识可以知道,每个函数独自占用一片栈空间,外部访问不到,那么就只能去最底层的全局环境window中找,找不到就报is not defined未定义
//2.对外提供接口,挂在全局变量window中,即使在函数外边,也可以在最底层全局环境中找到
(function(){
var a = 10 ;
function b(){
alert(a);
}
window.c = function c(){
alert(a);
}
})();
//利用作用域链的知识可以知道,每个函数独自占用一片栈空间,外部访问不到,那么就只能去最底层的全局环境window中找,找不到就报is not defined未定义
//alert(a); // a is not defined
//b(); //b is not defined
//挂在全局变量window中,在最底层可以找到
c();
//.......................................................jquery整体框架...................................................................
(function(){
(21,94) 定义了一些变量和函数 jquery = function() {};
(96,283) 给JQ对象添加一些方法和属性
(285,347) extend :JQ的继承和方法
(349,817) jquery.extend() :扩展工具方法(静态方法)
实例方法:需要对象来调用,原生js用不了
$().css() $().html()
静态方法:(工具方法):原生js可以用
$.trim() $.proxy()
(877,2856) Sizzle :复杂选择器的实现
(2880,3042) Callbacks :回调对象 :函数的一个统一管理
function fn1(){ alert(1) }
function fn2(){ alert(2) }
var cb = $.Callbacks();
cb.add(fn1);
cb.add(fn2);
cb.fire(); // fn1 和 fn2 都会执行
cb.remove(fn2); //移除了 fn2
cb.fire(); // 只有 fn1 会执行
(3043,3183) Deferred :延迟对象 :对异步的管理
setTimeout(function(){
alert(1);
},1000);
alert(2);
//利用延迟对象:先alert(2) 再alert(1) 可以如下写
var dfd = $.Deferred();
setTimeout(function(){
alert(1);
//第二步: 回调
dfd.resolve();
},1000);
//第一步 : 先将函数存在延迟对象中
dfd.done(function(){
alert(2);
});
(3184,3295) support :功能检测
(3308,3652) data() :数据缓存
$("#div1").data("name","hello"); // 数据存储
$("#div1").data(); //数据获取
(3653,3797) queue() :队列管理 :函数顺序管理
三个动画:怎么确保他按顺序执行下去
$("#div1").animate({left:100});
$("#div2").animate({top:100});
$("#div3").animate({width:100});
(3803,4299) attr() pop() val() addClass()等 :对元素属性的操作
(4300,5128) on() trigger() : 事件操作的相关方法
(5140,6057) DOM操作 :添加 删除 获取 包装 DOM删选
(6058,6620) css() :样式的操作
(6621,7854) 提交的数据和ajax() : ajax() load() getJson()
(7855,8584) animate() : 运动 fideIn() fideOut()
(8585,8792) offset() : 位置和尺寸的方法
(8804,8821) JQ支持模块化的模式
(8826) window.jquery = window.$ = jquery = function(){}; //这解释了为啥juqery()和$()等价
})()