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

          jQuery的一個關鍵函數(shù)

          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
              這一段代碼不知道怎么搞的,說是用來阻止死循環(huán),但我怎么也不明白他是如何阻止的,好像卻了他也沒什么影響。
              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的一個關鍵函數(shù)  回復  更多評論   

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



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

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

          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的一個關鍵函數(shù)  回復  更多評論   

          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的深度復制的區(qū)別
          if ( target.constructor == Boolean ) {
          deep = target;
          target = arguments[1] || {};
          }

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


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 龙口市| 永顺县| 肥乡县| 恩施市| 巩义市| 利津县| 东宁县| 依兰县| 任丘市| 山东省| 徐汇区| 延寿县| 峨边| 比如县| 南靖县| 灌南县| 区。| 辰溪县| 大同市| 济源市| 水富县| 抚松县| 台江县| 辽阳县| 临桂县| 若羌县| 辽宁省| 日土县| 泾源县| 井陉县| 安义县| 吉木萨尔县| 招远市| 宣汉县| 盐津县| 方城县| 将乐县| 沈阳市| 岗巴县| 昭觉县| 民县|