posts - 82, comments - 269, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          jQuery的一個關鍵函數

          Posted on 2007-10-26 08:52 itspy 閱讀(647) 評論(3)  編輯  收藏

          jQuery.extend = jQuery.fn.extend = function() {
           // copy reference to target object
           var target = arguments[0] || {}, a = 1, al = arguments.length, deep = false;

           // Handle a deep copy situation

          //這個IF條件基本上總是false,只有當target對象是布爾類型時才會是真,也就是這段代碼好像沒有什么作用

            if ( target.constructor == Boolean ) {  
            deep = target;
            target = arguments[1] || {};
           }

           // extend jQuery itself if only one argument is passed
           if ( al == 1 ) {
            target = this;
            a = 0;
           }

           var prop;

           for ( ; a < al; a++ )
            // Only deal with non-null/undefined values
            if ( (prop = arguments[a]) != null )
             // Extend the base object
             for ( var i in prop ) {
              // Prevent never-ending loop
              這一段代碼不知道怎么搞的,說是用來阻止死循環,但我怎么也不明白他是如何阻止的,好像卻了他也沒什么影響。
              if ( target == prop[i] )
               continue;

              // Recurse if we're merging object values
              if ( deep && typeof prop[i] == 'object' && target[i] )
               jQuery.extend( target[i], prop[i] );

              // Don't bring in undefined values
              else if ( prop[i] != undefined )
               target[i] = prop[i];
             }

           // Return the modified object
           return target;
          };


          評論

          # re: jQuery的一個關鍵函數  回復  更多評論   

          2008-06-25 13:34 by itspy
          不承認差距不行,自己花了至少好幾個小時也沒明白的代碼,被人家這樣深度解析了.



          http://blog.ccidnet.com/blog.php?do=showone&uid=77419&type=blog&itemid=251407

          # re: jQuery的一個關鍵函數  回復  更多評論   

          2008-06-25 14:16 by itspy
          http://noteslog.com/post/how-to-force-jqueryextend-deep-recursion/

          How to force jQuery.extend deep recursion

          # re: jQuery的一個關鍵函數  回復  更多評論   

          2008-06-25 14:26 by itspy
          var test =jQuery.extend( true,
          { a:{ x:1 }, b:'2' },
          { a:{ y:'1' }, c:3 } )

          console.log(test.a.y);
          console.log(test.a.x);


          var test =jQuery.extend(
          { a:{ x:1 }, b:'2' },
          { a:{ y:'1' }, c:3 } )

          console.log(test.a.y);
          console.log(test.a.x);


          上面這段代碼可以檢驗jQuery的深度復制的區別
          if ( target.constructor == Boolean ) {
          deep = target;
          target = arguments[1] || {};
          }

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 武夷山市| 英超| 翁源县| 招远市| 永德县| 井冈山市| 喀喇| 龙南县| 永平县| 德惠市| 南投市| 和政县| 青神县| 察雅县| 岗巴县| 丰城市| 通榆县| 阿勒泰市| 鄯善县| 长乐市| 青河县| 象山县| 杂多县| 康平县| 洞口县| 石景山区| 安仁县| 呼图壁县| 金门县| 喜德县| 大荔县| 新晃| 清原| 习水县| 福贡县| 全州县| 远安县| 福鼎市| 盖州市| 清水县| 新和县|