posts - 82, comments - 269, trackbacks - 0, articles - 1
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          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

          //這個(gè)IF條件基本上總是false,只有當(dāng)target對(duì)象是布爾類型時(shí)才會(huì)是真,也就是這段代碼好像沒(méi)有什么作用

            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
              這一段代碼不知道怎么搞的,說(shuō)是用來(lái)阻止死循環(huán),但我怎么也不明白他是如何阻止的,好像卻了他也沒(méi)什么影響。
              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;
          };


          評(píng)論

          # re: jQuery的一個(gè)關(guān)鍵函數(shù)  回復(fù)  更多評(píng)論   

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



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

          # re: jQuery的一個(gè)關(guān)鍵函數(shù)  回復(fù)  更多評(píng)論   

          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的一個(gè)關(guān)鍵函數(shù)  回復(fù)  更多評(píng)論   

          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);


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

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 阿尔山市| 城市| 鹤庆县| 南开区| 阿克| 灵石县| 荥阳市| 凤冈县| 乐安县| 鄂尔多斯市| 静乐县| 台中县| 吉木萨尔县| 建昌县| 河源市| 合山市| 黎川县| 山阳县| 吉林市| 沧州市| 古蔺县| 河西区| 遵义市| 寿宁县| 图木舒克市| 蒙城县| 南投市| 方山县| 观塘区| 镇安县| 泸西县| 治多县| 西宁市| 彰化市| 五大连池市| 禹城市| 湘潭市| 莆田市| 景谷| 福泉市| 桐柏县|