<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      川山甲

      追求內心的非常平靜!瞬間清空所有的雜念,達到物我兩忘!

        博客園  :: 首頁  ::  :: 聯系 :: 訂閱 訂閱  :: 管理
       
       
        最近在做日志統計程序,發現對方的程序是在Jquery基礎上進行開發的,而公司的網站的框架是prototype。而且我也早就想了解一下Jquery源碼,故決定研究Jquery源碼,模擬它的方法。
       
      Jquery這么普及,必有它過人之處,通過開源代碼進行學習,是個不錯的學習方法??! 
       
        以下是我模擬的方法,我盡量簡化方法。
       
      定義對象C(類似于jquery的$方法)——這個也是jquery設計非常巧妙的地方
       
      (function(){
          var 
              _cQuery = window.cQuery,
              cQuery = function(){
                  return new cQuery.fn.init();
              };  
          cQuery.fn = cQuery.prototype =  {
                  init : function () {
               console.log(this);
      return this; }, test : function () { console.log('test'); } }; cQuery.fn.init.prototype = cQuery.fn; window.C = window.cQuery = cQuery; })(); C().test();

                                           輸出結果

      代碼分析


       

        1、把cQuery注冊到window屬性中,當成全局變量使用。用C做為簡易名稱。

      window.C = window.cQuery = cQuery;

       

           2、

      cQuery.fn.init.prototype = cQuery.fn;

        拿圖說話(打印當前對象cQuery):

                               去掉該句截圖?! ?/p>

                               

                               填上此句截圖:

                               

      難點分析:原型傳遞

        init的原型只是當前的函數?!?/p>

                

        用cQuery.fn.init.prototype =  cQuery.fn;覆蓋init構造器的原型對象,從而實現跨域訪問。

      評估:

        這是一招妙棋,new cQuery.fn.init()創建的新對象擁有init構造器的prototype原型對象的方法,通過改變prototype指針的指向,使其指向cQuery類的prototype?!@樣創建出來的對象就繼承了cQuery.fn原型對象定義的方法。

        3、用一個var定義變量,函數。Jquery源碼里用了79行定義了一連串的變量(在開頭部分)。

        


       

       
      each方法
       
      (function(){
          var
              _cQuery = window.cQuery,
              cQuery = function(){
                  return new cQuery.fn.init();
              };
          cQuery.fn = cQuery.prototype =  {
                  init : function () {
                      return this;
                  },  
                  each : function(obj, callback) {    // each 方法
                      var name, length = obj.length;  
                      for (name in obj) {
                          if (callback.call(obj[name], name, obj[name]) === false) {
                              break;
                          }   
                      }   
                  },  
                  isWindow : function(obj) {
                      return obj != null && obj == obj.window;
                  }   
              };  
          cQuery.fn.init.prototype =  cQuery.fn;
          window.C = window.cQuery =cQuery;
      })();
      
      C().each({ Height : 'height', Width : 'width'}, function(name, type){ console.log(this, name, type); });

                            輸出結果

      難點分析:callback.call(obj[name], name, obj[name])

      callback是function(name, type){   console.log(this, name,type);}這個方法

      第一個obj[name]是"height“或"width"字符串,是callback函數里的this。

      name,第二個obj[name]是傳給callback的參數。

       
       
      isWindow()方法
       
       在上面代碼的基礎上,進行編寫:
       isWindow : function(obj) {
                      return obj != null && obj == obj.window;
                  }

                                           調用:

      console.log(cquery.isWindow(window));
      console.log(cquery.isWindow(document));

                                           輸出結果

      window對象有一個特殊的屬性window,等價于 self 屬性,它包含了對窗口自身的引用。通過這個屬性判斷是否是window對象!

       
      總結
       
        我也是剛開始研究。可能有些地方說的不是很清楚,如果有人能給我補充,那再好不過了。
        
        時間不早了,下回再接著研究。
       
       
      推薦
       
       
      posted on 2012-11-21 21:40  川山甲  閱讀(10318)  評論(13)    收藏  舉報
      主站蜘蛛池模板: 亚洲中文字幕无码久久精品1| 岛国岛国免费v片在线观看| 国产偷国产偷亚洲高清午夜| 日韩女同一区二区三区久久| 久久国产免费观看精品3| 无码h片在线观看网站| 国产精品一区二区人人爽| 性做久久久久久久| 无码福利写真片视频在线播放| 亚洲av无码精品色午夜蛋壳| 极品美女扒开粉嫩小泬图片| 国产蜜臀一区二区三区四区| 亚洲中文字幕无码中字| 国产精品国产三级国快看| 亚洲av永久无码精品网站| 午夜福利理论片高清在线| 4399理论片午午伦夜理片| 91人妻无码成人精品一区91| 日韩一区二区大尺度在线| 亚洲av永久无码精品水牛影视| 无码内射中文字幕岛国片| 久久久国产成人一区二区| 亚洲av激情久久精品人| 97在线视频人妻无码| 国产精品一区二区久久毛片| 久久国产免费观看精品| 国产欧美日韩视频一区二区三区 | 久久视频这里只精品| 久久精品波多野结衣| 国产精品亚洲av三区色| 东方av四虎在线观看| 日本阿v片在线播放免费| 国产成人精品成人a在线观看| 亚洲情综合五月天| 欧美人与zoxxxx另类| 欧美牲交videossexeso欧美| 免费人成网站免费看视频| 亚洲精品麻豆一二三区| 大战丰满无码人妻50p| 国产精品天堂蜜av在线播放| 免费看又黄又无码的网站|