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 

應該緩存 或者是保存數據的機制

發佈了73 篇原創文章 · 獲贊 0 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章