首页 > 网站 > WEB开发 > 正文

jquery源码分析----jquery框架提炼

2024-04-27 15:18:53
字体:
来源:转载
供稿:网友
//--------------------------------------------------------全局和局部------------------------------------------------------------------------//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()和$()等价                })()


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表