<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        jquery的extend方法解析

        來源:懂視網 責編:小采 時間:2020-11-27 20:12:10
        文檔

        jquery的extend方法解析

        jquery的extend方法解析:1.前段時間一直忙于研究數據可視化(d3.js,three.js) 以及 php的 laravel框架,生活上也遇到很多事情,這大概就是人生中的迷茫期吧。回想起,剛出來工作的時候,目標很明確,要學習什么。將來要達到什么樣的高度,要跟大神們肩并肩,談天論地。朝著這個目標一
        推薦度:
        導讀jquery的extend方法解析:1.前段時間一直忙于研究數據可視化(d3.js,three.js) 以及 php的 laravel框架,生活上也遇到很多事情,這大概就是人生中的迷茫期吧。回想起,剛出來工作的時候,目標很明確,要學習什么。將來要達到什么樣的高度,要跟大神們肩并肩,談天論地。朝著這個目標一

        1.前段時間一直忙于研究數據可視化(d3.js,three.js) 以及 php的 laravel框架,生活上也遇到很多事情,這大概就是人生中的迷茫期吧。

        回想起,剛出來工作的時候,目標很明確,要學習什么。將來要達到什么樣的高度,要跟大神們肩并肩,談天論地。朝著這個目標一直

        努力著。但隨著見過的、做過的、東西越多,反而越來越迷茫-----感覺啥都會,借著度娘,工作中基本不會遇到什么問題了。

        但仔細想來又啥都不會。閉著眼睛一寫,這也記不住,那也記不住(也許是年齡大的原因吧)。目標一直未變,但怎樣自己才能成為自己的偶像,卻很困惑。

        獨自在前端的海洋中漂行著,摸索著,我知道一定走了很多彎路,但我也知道一直前進著。前行之中缺少一盞明燈,怎樣才能找到自己的明燈呢?

        無聊之時讀了讀jQuery的源碼,希望能夠找到自己的那盞燈。

        /**
         1. $.extend的用法。 第一個參數是決定是否需要深復制。 由 true, false。 默認是淺復制
         params:
         options => 接收傳遞過來的arguments 的中間參數。
         name => 沒對對象的key值。
         src => 當傳遞的對象key值相同到時候。要和并
         copy => 復制的value 值。
         copyIsArray => 判斷value對象是不是數組。
         clone => 當深度復制的時候。需要新建一個變量。不會改變原始的值。
         target => 最開始是默認值是取傳進來的第一個參數。過后往后一直跳。$.extend(a,b,c); target 為 a, 為b,為c。
         i => 決定當前target 等于參數中的某個值
         length =>
         deep => 默認是false 是決定是否需要深復制的參數。 true 是深復制。 false 是淺復制*/jQuery.extend = jQuery.fn.extend = function() { var options, name, src, copy, copyIsArray, clone,
         target = arguments[ 0 ] || {},
         i = 1,
         length = arguments.length,
         deep = false; // 判斷 target 來決定是否 深復制
         if ( typeof target === "boolean" ) {
         deep = target; //當深復制的時候,需要跳過第一個參數。 來循環傳進來的參數。 剛開始 1,2,3
         target = arguments[ i ] || {};
         i++;
         
         } // 當 target 不是一個對象且 不是一個函數對象 這個時候就把target 變為空對象。
         if ( typeof target !== "object" && !jQuery.isFunction( target ) ) {
         target = {};
         } // 如果傳遞過來的參數只有一個的情況下。target 就是該參數。
         if ( i === length ) {
         target = this;
         i--; // 把i 改為1 } for ( ; i < length; i++ ) { // 處理非空 或者 undefined 的情況。 null == null 。 undefined == null;
         //options 是來接收除了第一個參數外的所有參數。中間橋梁的作用吧
         if ( ( options = arguments[ i ] ) != null ) { // name in options 決定了 傳過來的值必須是對象。如果不是對象的話。將要被拆分
         for ( name in options ) { //這個是決定后面同級 的key 值, 后面將要覆蓋前面的。
         src = target[ name ]; //獲取 key值為 name 的 value值。
         copy = options[ name ]; // Prevent never-ending loop 阻止無限循環。 ???沒有搞懂,設么情況下才會出現這種情況。
        
         if ( target === copy ) { 
         continue;
         } /**
        
         1.深復制,且value 為對象屬性的時候執行遞歸復制。 isPlainObect(copy) 判斷copy第不是一個 純對象
         2.copy 時一個數組的時候。執行里面的函數。
         3.(因為只有對象value 和 數組value 是需要進行深復制的。) */
         if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
         ( copyIsArray = Array.isArray( copy ) ) ) ) { 
         if ( copyIsArray ) {
         
         copyIsArray = false;
         clone = src && Array.isArray( src ) ? src : [];
        
         } else {
         
         clone = src && jQuery.isPlainObject( src ) ? src : {};
         } // 創建新對象。來進行深度復制。
         target[ name ] = jQuery.extend( deep, clone, copy ); //除了對象數組,和undefined 的值。
         } else if ( copy !== undefined ) {
         target[ name ] = copy;
         }
         }
         }
         } // Return the modified object
         return target;
        };

        本段來自jquery。 version = 3.2.1 版本。 每個人的觀點必定有不一樣的地方。有錯的地方希望大家指出來。共同學習。

        上面這段代碼中有個地方一直沒有想出來。

         // Prevent never-ending loop 阻止無限循環。 ???沒有搞懂,設么情況下才會出現這種情況。 {} != {} 沒有想出來什么情況下才會出現target === copy的情況。
        
         if ( target === copy ) { 
         continue;
         }

        目前看了大概10分之1吧,學習了很多套路。也許真的能夠找到自己的那盞明燈。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        jquery的extend方法解析

        jquery的extend方法解析:1.前段時間一直忙于研究數據可視化(d3.js,three.js) 以及 php的 laravel框架,生活上也遇到很多事情,這大概就是人生中的迷茫期吧。回想起,剛出來工作的時候,目標很明確,要學習什么。將來要達到什么樣的高度,要跟大神們肩并肩,談天論地。朝著這個目標一
        推薦度:
        標簽: 方法 詳解 解析
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 曰韩亚洲av人人夜夜澡人人爽| 91老湿机福利免费体验| 国产精品成人免费综合| 91丁香亚洲综合社区| 无遮免费网站在线入口| 亚洲一级特黄特黄的大片| 大学生高清一级毛片免费| 亚洲av无码兔费综合| 亚洲 国产 图片| 中文字幕免费视频精品一| 久久青青草原亚洲av无码| 中国一级特黄高清免费的大片中国一级黄色片| 亚洲精品国产自在久久| 波霸在线精品视频免费观看| 亚洲国产精品无码专区| 在线观看免费av网站| 亚洲AV无码乱码麻豆精品国产| 免费观看的a级毛片的网站| 青娱乐在线视频免费观看| 亚洲综合图色40p| 一级毛片在线观看免费| 久久狠狠爱亚洲综合影院| 日本免费网站观看| 精品一区二区三区免费观看| 亚洲视频小说图片| 亚洲综合激情视频| 久久这里只有精品国产免费10| 亚洲日本在线免费观看| 成人免费视频网址| 一级做性色a爰片久久毛片免费| 亚洲乱码无码永久不卡在线| 久久九九兔免费精品6| 亚洲AV无码成人精品区日韩| 亚洲无av在线中文字幕| 97碰公开在线观看免费视频| 日本高清免费中文在线看| 色播亚洲视频在线观看| 四虎免费久久影院| 3344免费播放观看视频| 免费国产a理论片| 亚洲国产日韩在线人成下载|