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

          jQuery的一個關鍵函數

          Posted on 2007-10-26 08:52 itspy 閱讀(652) 評論(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] || {};
          }

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


          網站導航:
           
          主站蜘蛛池模板: 东乡族自治县| 利川市| 梅州市| 游戏| 镇江市| 古浪县| 玛曲县| 武川县| 忻城县| 锡林郭勒盟| 板桥市| 旅游| 五寨县| 松原市| 长宁区| 沁水县| 甘孜| 黄龙县| 青铜峡市| 筠连县| 和平县| 枞阳县| 深水埗区| 张掖市| 浦城县| 图木舒克市| 永宁县| 博兴县| 白沙| 蒙山县| 温宿县| 扬州市| 巴青县| 出国| 绥滨县| 宁陵县| 马边| 澜沧| 呼伦贝尔市| 海宁市| 肇东市|