国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

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

2019-11-20 14:37:27
字體:
供稿:網(wǎng)友

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

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

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

給jQuery實例對象添加擴展時用$.fn.extend();

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

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

因為參數(shù)的個數(shù)是不確定的,所以沒有列出可接受的具體參數(shù).

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

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

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

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

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

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 乐东| 梁平县| 花垣县| 根河市| 朔州市| 吉木萨尔县| 晋宁县| 梅河口市| 安塞县| 文登市| 南溪县| 秦皇岛市| 宝应县| 扬中市| 雷山县| 兴仁县| 乐业县| 铜陵市| 宁陕县| 孟州市| 收藏| 林周县| 武川县| 陆丰市| 专栏| 杭锦后旗| 灵川县| 灌云县| 蓬安县| 民乐县| 运城市| 玛曲县| 嵩明县| 平武县| 常宁市| 诏安县| 华宁县| 双桥区| 澄城县| 崇阳县| 朝阳市|