jq代码分析 函数

 

extend

 

一个参数可以对象  也可以是布尔    (如果是布尔值表示是否深度便利)

如果是一个对象则 扩展到原来的对象上去

如果是多个对象   则每个对象都扩展到原来的对象上去

 

var wt = function(){

};

wt.extend = function() {

                   var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options;

                  

                   //根据第一个参数来判断是否深度遍历

                   if ( typeof target === "boolean" ) {

                            deep = target;

                            target = arguments[1] || {};

                            i = 2;         

                   }

                   

 

                   if ( typeof target !== "object" )

                            target = {};

        

        

                   //如果只有一个遍历对象  (在有判断深度遍历的时候 i=2了 这时是2个以上参数 遍历对象从地2个开始)        

                   // 用 target引用wt

                   if ( length == i ) {

                            target = this;

                            --i;

                   }

        

 

                   for ( ; i < length; i++ )

 

                            if ( (options = arguments[ i ]) != null )

 

                                     for ( var name in options ) {

                                               var src = target[ name ], copy = options[ name ];

        

                                               if ( target === copy )

                                                        continue;

                                               //如果他们引用的同一个对象 跳出循环 避免重复遍历

 

                                               if ( deep && copy && typeof copy === "object" && !copy.nodeType )

                                                        target[ name ] = wt.extend( deep,

 

                                                                 src || ( copy.length != null ? [ ] : { } )

                                                        , copy );

                                               //进行深度遍历     

 

                                               else if ( copy !== undefined )

                                                        target[ name ] = copy;

                                     }

 

                  return target;

};

 

each

 

有3个参数 第一个是集合 可以是数组,对象,元素集合(如document.body.getElementsByTagName('div')) 
第2个参数是函数 就是每次便利的时候需要执行的函数
如果不带第3个参数arg
且如果第一个参数是obj callbacl的第一个参数是  属性名  第二个是属性直
如果第一个参数是 数组or元素集合 则第一个参数某项的索引 第2个参数是直
第3个参数 是指callback的所需要的参数 可以为空 且必须为数组
 

 

 

browser

 

判断浏览器的类型   根据window.navigator.userAgent字符串来判断浏览器的类型

 

 

param  

 

返回一个参数的字符串形式

 

 

 

Ajax之jsonp和script部分

创建一个script标签 和一个回调函数 返回一个json数据

 

 ready

 也就是$(document).ready中的 ready

在非ie浏览器中  document 的 DOMContentLoaded 方法 可以DOM结构加载完毕之后触发

在ie中 可以用 执行document.documentElement.doScroll("left")

因为没有再加完的时候是会抛出异常的  所以可以不停的重复执行  直到加载成功.

 

 

data 

应该缓存 或者是保存数据的机制

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值