最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

讀jQuery之二(兩種擴(kuò)展)

 更新時(shí)間:2011年06月11日 00:57:21   作者:  
上一篇分析了jQuery對象的組成,這篇分析下它的extend方法。
如下
復(fù)制代碼 代碼如下:

jQuery.extend = jQuery.fn.extend = function() {
...
};

我們可以用$.extend去擴(kuò)展自定義的對象,如
復(fù)制代碼 代碼如下:

var myself = {name:jack};
$.extend(myself, {setName: function(n){this.name=n;} });
myself.setName("tom");

通過$.extend為對象myself添加了setName方法。但這里主要討論$.extend如何構(gòu)建jQuery庫的。不知注意到上面代碼中jQuery.extend和jQuery.fn.extend是同一個(gè)函數(shù)。我們?yōu)g覽下jQuery庫,發(fā)現(xiàn)有些方法是通過調(diào)用jQuery.extend擴(kuò)展的,有些則是通過調(diào)用jQuery.fn.extend擴(kuò)展的。
下面分別討論:
1,通過jQuery.extend擴(kuò)展
我們知道jQuery.extend中的jQuery類型是function,即typeof jQuery值為字符串“function”。如果把jQuery當(dāng)成一個(gè)類,jQuery.extend相當(dāng)于為該類添加了靜態(tài)方法extend。靜態(tài)方法是不需要new一個(gè)實(shí)例再去調(diào)用的,通過“類名+方法名”直接調(diào)用。即jQuery.extend(...),jQuery又被賦值給$。因此我們更習(xí)慣$.extend(...)。
源碼中直接調(diào)用jQuery.extend方法,只傳一個(gè)參數(shù)。如下
復(fù)制代碼 代碼如下:

jQuery.extend({
noConflict: function( deep ) {
window.$ = _$;
if ( deep )
window.jQuery = _jQuery;
return jQuery;
},
...
});

我們知道extend中如果只傳一個(gè)參數(shù),那么將執(zhí)行該句
復(fù)制代碼 代碼如下:

if ( length === i ) {
target = this;
--i;
}

即擴(kuò)展自己,而這里的this則是function jQuery。也就是說給function jQuery添加了許多靜態(tài)方法,這些方法都可以直接通過jQuery.xx(或$.xx)方式來調(diào)用,而不是先執(zhí)行(調(diào)用)jQuery方法再去調(diào)用xx,如$("#id").xx。也許下面這個(gè)例子更容易理解
復(fù)制代碼 代碼如下:

function fun(){}//定義一個(gè)類(函數(shù))
//為該類(函數(shù))添加一個(gè)靜態(tài)方法extend
fun.extend=function(obj){
for(var a in obj)
this[a] = obj[a];//注意:這里的tihs即fun
}
//調(diào)用extend為該類添加了靜態(tài)屬性name,靜態(tài)方法method1
fun.extend({name:"fun",method1:function(){}});
//輸出name,prototype,extend,method1
console.dir(fun)

因此,jQuery中的isFunction, isArray, isWindow等都是靜態(tài)方法,只能通過$.isFunction, $.isArray, $.Window引用。而不能通過$("...").isFuction, $("...").isArray, $("...").isWindow方式引用。
2,通過jQuery.fn.extend擴(kuò)展
jQuery.fn等于jQuery.prototype,也就是說給function jQuery的原型(prototype)上掛了個(gè)extend方法。通過調(diào)用jQuery.fn.extend(object)來擴(kuò)展時(shí)(注意只傳一個(gè)參數(shù)object),extend函數(shù)中仍然會(huì)執(zhí)行
復(fù)制代碼 代碼如下:

if ( length === i ) {
target = this;
--i;
}

而這時(shí)的this則是jQuery.prototype(第一條提到的則是jQuery函數(shù)自身)。即給jQuery.prototype上添加了許多屬性,方法。當(dāng)jQuery函數(shù)執(zhí)行時(shí),如$()或jQuery(),更多時(shí)候是$()。該函數(shù)會(huì)new一個(gè)jQuery(見上一篇jQuery對象的組成)。這時(shí)則把擴(kuò)展的屬性,方法都附加到new生成的對象上了。也許下面這個(gè)示例更容易理解
復(fù)制代碼 代碼如下:

function fun(){}//定義一個(gè)類(函數(shù))
//給該類原型上添加一個(gè)方法extned
fun.prototype.extend = function(obj){
for(var a in obj)
this[a] = obj[a];//注意:這里的this即是fun.prototype
}
//調(diào)用extend方法給fun.prototype上添加屬性,方法
fun.prototype.extend({name:"fun2",method1:function(){}})
//輸出name,extend,method1
console.dir(new fun())

因此擴(kuò)展的屬性或方法都添加到j(luò)Query對象上了。如bind, one, unbind等可以通過$("...").bind, $("...").one, $("...").unbind方式調(diào)用。卻不能通過 $.bind, $.one, $.unbind方式調(diào)用。
jQuery與Prototype一樣都是通過extend方法擴(kuò)展出整個(gè)庫的。相對來說jQuery的擴(kuò)展方式更難理解一些。
總結(jié)如下:
1,jQuery.extend({...})是給function jQuery添加靜態(tài)屬性或方法。
2,jQuery().extend({...})是給jQuery對象添加屬性或方法。
/js/2011/zchain/zchain-0.2.js

相關(guān)文章

  • jQuery插件之Tocify動(dòng)態(tài)節(jié)點(diǎn)目錄菜單生成器附源碼下載

    jQuery插件之Tocify動(dòng)態(tài)節(jié)點(diǎn)目錄菜單生成器附源碼下載

    Tocify是一個(gè)能夠動(dòng)態(tài)生成文章節(jié)點(diǎn)目錄的jQuery插件,通過本文給大家分享jQuery插件之Tocify動(dòng)態(tài)節(jié)點(diǎn)目錄菜單生成器,對tocify菜單生成器相關(guān)知識感興趣的朋友一起學(xué)習(xí)吧
    2016-01-01
  • JQuery之proxy實(shí)現(xiàn)綁定代理方法

    JQuery之proxy實(shí)現(xiàn)綁定代理方法

    下面小編就為大家?guī)硪黄狫Query之proxy實(shí)現(xiàn)綁定代理方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-08-08
  • jQuery帶進(jìn)度條全屏圖片輪播特效代碼分享

    jQuery帶進(jìn)度條全屏圖片輪播特效代碼分享

    這篇文章主要介紹了jQuery帶進(jìn)度條全屏圖片輪播特效,圖片輪播效果特別適合做產(chǎn)品展示,還帶有進(jìn)度條轉(zhuǎn)接全屏圖片展示,感興趣的小伙伴可以參考下
    2015-09-09
  • jQuery插件實(shí)現(xiàn)大圖全屏圖片相冊

    jQuery插件實(shí)現(xiàn)大圖全屏圖片相冊

    這篇文章主要介紹了jQuery插件實(shí)現(xiàn)大圖全屏圖片相冊的方法和示例,基于jQuery插件jQuery.album.js來實(shí)現(xiàn)的,效果非常不錯(cuò),這里推薦給大家,希望大家能夠喜歡。
    2015-03-03
  • jQuery+CSS實(shí)現(xiàn)菜單滑動(dòng)伸展收縮(仿淘寶)

    jQuery+CSS實(shí)現(xiàn)菜單滑動(dòng)伸展收縮(仿淘寶)

    淘寶網(wǎng)上的菜單滑動(dòng)伸展收縮想必大家不會(huì)很陌生吧,接下來本文也使用jquery+css實(shí)現(xiàn)一個(gè),代碼很簡潔功能很使用,感興趣的各位可以不要錯(cuò)過了哈
    2013-03-03
  • jquery 指南/入門基礎(chǔ)

    jquery 指南/入門基礎(chǔ)

    jquery 指南/入門基礎(chǔ)...
    2007-11-11
  • jQuery中data()方法用法實(shí)例

    jQuery中data()方法用法實(shí)例

    這篇文章主要介紹了jQuery中data()方法用法,實(shí)例分析了data()方法向匹配元素附加數(shù)據(jù)及獲取數(shù)據(jù)的使用技巧,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-12-12
  • JQuery驗(yàn)證工具類搜集整理

    JQuery驗(yàn)證工具類搜集整理

    本文搜集整理了一些如郵箱、手機(jī)號碼、電話號碼、郵編、數(shù)字、判斷是否為空、正則匹配等等常用驗(yàn)證;感興趣的朋友可以了解下
    2013-01-01
  • jQuery實(shí)現(xiàn)的中英文切換功能示例

    jQuery實(shí)現(xiàn)的中英文切換功能示例

    這篇文章主要介紹了jQuery實(shí)現(xiàn)的中英文切換功能,結(jié)合實(shí)例形式分析了jQuery結(jié)合插件translate.js實(shí)現(xiàn)中英文翻譯的相關(guān)操作技巧,需要的朋友可以參考下
    2019-01-01
  • JQuery入門——用bind方法綁定事件處理函數(shù)應(yīng)用介紹

    JQuery入門——用bind方法綁定事件處理函數(shù)應(yīng)用介紹

    bind()功能是為每個(gè)選擇元素的事件綁定處理函數(shù),感興趣的你可以了解下它的語法bind(type, [data], fn),參數(shù)data是作為event.data屬性值傳遞對象的額外數(shù)據(jù)對象,好好學(xué)習(xí)希望本可以幫助到你
    2013-02-02

最新評論

肃南| 红原县| 石林| 顺昌县| 柳州市| 民丰县| 南皮县| 镇江市| 长岛县| 竹溪县| 广宁县| 资源县| 铁岭市| 牙克石市| 武义县| 光山县| 政和县| 介休市| 安新县| 高雄市| 西昌市| 江口县| 丹寨县| 龙山县| 上犹县| 闸北区| 沙湾县| 兴文县| 凤城市| 北海市| 霍山县| 新晃| 紫金县| 射阳县| 新竹县| 宜兴市| 辰溪县| 大庆市| 林周县| 抚顺市| 永丰县|