最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題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關(guān)鍵字專題關(guān)鍵字專題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
當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

jQuery學(xué)習(xí)筆記之jQuery.extend(),jQuery.fn.extend()分析_jquery

來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 21:24:11
文檔

jQuery學(xué)習(xí)筆記之jQuery.extend(),jQuery.fn.extend()分析_jquery

jQuery學(xué)習(xí)筆記之jQuery.extend(),jQuery.fn.extend()分析_jquery:deep是布爾值,表示是否進(jìn)行深度合并,默認(rèn)是false,不執(zhí)行深度合并.通過這種方式可以在jQuery或jQuery.fn上添加新的屬性和方法,jQuery的其他模塊大都是這么實(shí)現(xiàn)的. 給jQuery添加擴(kuò)展時(shí)用$.extend()如:jQuery.extend({add:function(
推薦度:
導(dǎo)讀jQuery學(xué)習(xí)筆記之jQuery.extend(),jQuery.fn.extend()分析_jquery:deep是布爾值,表示是否進(jìn)行深度合并,默認(rèn)是false,不執(zhí)行深度合并.通過這種方式可以在jQuery或jQuery.fn上添加新的屬性和方法,jQuery的其他模塊大都是這么實(shí)現(xiàn)的. 給jQuery添加擴(kuò)展時(shí)用$.extend()如:jQuery.extend({add:function(

deep是布爾值,表示是否進(jìn)行深度合并,默認(rèn)是false,不執(zhí)行深度合并.
通過這種方式可以在jQuery或jQuery.fn上添加新的屬性和方法,jQuery的其他模塊大都是這么實(shí)現(xiàn)的.

給jQuery添加擴(kuò)展時(shí)用$.extend()
如:jQuery.extend({add:function(a,b){return a+b}})

使用:$.add(1,3)=====>4;

給jQuery實(shí)例對(duì)象添加擴(kuò)展時(shí)用$.fn.extend();

$.fn.extend({gys:function(){$(this).css("color","red")}});

調(diào)用:$("div.guo").gys();

因?yàn)閰?shù)的個(gè)數(shù)是不確定的,所以沒有列出可接受的具體參數(shù).

options:指向某個(gè)源對(duì)象.
name:某個(gè)源對(duì)象的某個(gè)屬性名.
src:目標(biāo)對(duì)象的某個(gè)屬性的原始值.
copy:某個(gè)源對(duì)象的某個(gè)屬性的值
copyIsArray:指示copy是否是數(shù)組
clone:深度復(fù)制時(shí)原始值的修正值.
target:目標(biāo)對(duì)象.
i:源對(duì)象的起始下標(biāo).
length:參數(shù)的個(gè)數(shù),用于修正變量target.
deep:是否執(zhí)行深度復(fù)制.

333~338:如果第一個(gè)參數(shù)是布爾值,則把target賦值給deep,target在重新獲取值,把第二個(gè)參數(shù)賦給target.
這個(gè)時(shí)候i值從一開始的1變成了2.表示源對(duì)象本來是從第二個(gè)元素開始的,現(xiàn)在變成了第三個(gè)元素了.這段代碼結(jié)合
327行代碼就知道為什么會(huì)有這個(gè)if語句了.原來函數(shù)extend在執(zhí)行的時(shí)候,不管參數(shù)情況如何,首先給target和i賦值.
然后再后面修正.

341~343:如果目標(biāo)對(duì)象target不是對(duì)象,不是函數(shù),則targeted={};

346~349:length和i相等時(shí),表示沒有傳入objcet1,...之類的參數(shù),
這個(gè)時(shí)候把this當(dāng)前對(duì)象(jQuery或jQuery.fn)作為目標(biāo)對(duì)象,在把i減一.從而使傳入的對(duì)象當(dāng)作源對(duì)象.

351行開始循環(huán),i表示開始源對(duì)象的下標(biāo),是一個(gè)非常巧妙的用法.
353行也很精彩,它把獲取源對(duì)象和對(duì)源對(duì)象的判斷放在了一條語句中,只有源對(duì)象不為空時(shí)才會(huì)執(zhí)行.
354~362行,變量src是原始值,變量copy是復(fù)制值.如果target和copy引用相同,為了遍歷時(shí)死循環(huán),
因此不會(huì)覆蓋目標(biāo)對(duì)象的同名屬性.如果注釋掉360行,下面的代碼會(huì)出現(xiàn)異常.
var obj={};
obj.n1=obj;
$.extend(true,obj,{n2:obj});
在不同瀏覽器中會(huì)出項(xiàng)不同的報(bào)錯(cuò),但是都無一例外的出現(xiàn)卡屏很久的現(xiàn)像.

365~372行,如果是深度合并,且復(fù)制copy是普通javascript對(duì)象或數(shù)組,則遞歸合并.
378~380行,如果不是深度合并,并且copy不是undefined,則直接覆蓋目標(biāo)對(duì)象的同名屬性.

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

jQuery學(xué)習(xí)筆記之jQuery.extend(),jQuery.fn.extend()分析_jquery

jQuery學(xué)習(xí)筆記之jQuery.extend(),jQuery.fn.extend()分析_jquery:deep是布爾值,表示是否進(jìn)行深度合并,默認(rèn)是false,不執(zhí)行深度合并.通過這種方式可以在jQuery或jQuery.fn上添加新的屬性和方法,jQuery的其他模塊大都是這么實(shí)現(xiàn)的. 給jQuery添加擴(kuò)展時(shí)用$.extend()如:jQuery.extend({add:function(
推薦度:
標(biāo)簽: 分析 fn 學(xué)習(xí)筆記
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top