<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
        主站蜘蛛池模板: 亚洲午夜精品国产电影在线观看| 国产亚洲一区二区三区在线不卡 | 四虎影在线永久免费观看| 激情综合亚洲色婷婷五月| 亚洲乱色熟女一区二区三区丝袜| 国产亚洲视频在线播放大全| 又粗又大又猛又爽免费视频| 阿v视频免费在线观看| 亚洲美女在线国产| 久久WWW免费人成—看片| 国产AV无码专区亚洲A∨毛片| 免费无码黄网站在线看| 亚洲自偷自偷精品| 国产免费女女脚奴视频网| 亚洲欧洲精品成人久久曰影片| 好猛好深好爽好硬免费视频| 亚洲av无码一区二区三区网站| 免费精品视频在线| 中文字幕精品无码亚洲字| 七色永久性tv网站免费看| 亚洲黄色免费在线观看| 在线a毛片免费视频观看| 色妞www精品视频免费看| 亚洲成A人片在线观看WWW| 国产免费的野战视频| 黄色a级免费网站| 青青草原精品国产亚洲av| 成年人免费观看视频网站| 日韩精品无码永久免费网站| 亚洲AV无码久久| 青青草免费在线视频| sihu国产精品永久免费| 亚洲AV无码专区在线亚| 亚洲Av无码乱码在线znlu| 一区二区免费视频| 337P日本欧洲亚洲大胆艺术图| 亚洲一区二区三区偷拍女厕| 国产一精品一AV一免费孕妇| 在线观看免费黄网站| 亚洲色大成网站www永久男同 | 婷婷亚洲天堂影院|