<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    MDA/MDD/TDD/DDD/DDDDDDD
    posts - 536, comments - 111, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    jquery源代碼解讀筆記

    Posted on 2008-06-07 02:39 leekiang 閱讀(4896) 評論(2)  編輯  收藏 所屬分類: jquery(進去而已)

    1,整體結構如下

    ( function ()?{
    // ……
    })();
    第一對括號里是一個匿名函數,第一對括號表示執行該函數。
    注: js的匿名函數模式?? http://www.hedgerwow.com/360/dhtml/js-anonymous-function-patterns.html
    非匿名函數的類似寫法如下
    (?function?test(){alert('test');})();
    所有的jquery代碼都放在該匿名函數里,避免了命名沖突。但有兩個要單獨處理:'jQuery'和'$'

    //?Map?over?jQuery?in?case?of?overwrite
    var?_jQuery?=?window.jQuery,
    //?Map?over?the?$?in?case?of?overwrite
    ????_$?=?window.$;

    var?jQuery?=?window.jQuery?=?window.$?=?function(?selector,?context?)?{
    ????
    //?The?jQuery?object?is?actually?just?the?init?constructor?'enhanced'
    ????return?new?jQuery.fn.init(?selector,?context?);
    };
    noConflict:?function(?deep?)?{
    ????????window.$?
    =?_$;

    ????????
    if?(?deep?)
    ????????????window.jQuery?
    =?_jQuery;

    ????????
    return?jQuery;
    ????},
    假如沒有執行noConflict,則原來定義的$或jQuery(如果定義了的話)會被一個新函數覆蓋,只在內部留一個原來的引用(名叫_$或_jQuery)。
    如果要兼容原來的$,則執行jQuery.noConflict(),然后只能用jQuery的寫法;
    極端情況:"jQuery"也被占用了,又要兼容,那么執行var myJQ =jQuery.noConflict(true),以后全用myJQ的寫法。
    注意:這時jquery.js要放在其他js的后面。
    2,
    ?定義jQuery的構造和原型函數,這個過程同時定義了prototype的別名為fn:jQuery.prototype=jQuery.fn。 jQuery對象的原型prototype包括了諸多的核心方法和屬性:
    init
    jquery 當前的版本號
    size 返回了length屬性
    length
    get
    each
    ...
    定義完了以后必須寫以下代碼,不明白
    //?Give?the?init?function?the?jQuery?prototype?for?later?instantiation(晚初始化?)
    jQuery.fn.init.prototype?=?jQuery.fn;
    http://bbs.blueidea.com/thread-2843388-1-1.html
    jQuery.prototype.init( selector, context )是jQuery對象的一個成員函數,但是在jQuery構造函數中總是會執行這個函數,所以說"它是加強的構造函數(init?constructor?'enhanced')。因為在執行構造函數jQuery 時總是會執行它。 這也是很多框架的典型做法。
    jQuery有3個身份,類,對象,函數(構造函數)。
    如果find是對象的方法,即類似于 jQuery.find=function(){}
    那么就應該使用jQuery.find();

    如果find是類的成員函數,即類似于 jQuery.prototype.find=function(){}
    那么必須通過jQuery()返回jQuery實例,再調用find方法,即jQuery().find()。

    8,jQuery源碼解讀---執行過程分析
    http://hi.baidu.com/zhuguoneng/blog/item/3d07e9d667e9482b06088b4c.html

    評論

    # re: jquery源代碼解讀筆記  回復  更多評論   

    2011-11-24 13:07 by 政治
    政治

    # re: jquery源代碼解讀筆記  回復  更多評論   

    2011-12-14 16:24 by 政治相關
    政治相關
    主站蜘蛛池模板: 亚洲男人第一无码aⅴ网站| 四虎影视永久免费观看网址| 成人免费毛片内射美女APP| 精品久久免费视频| 亚洲精品老司机在线观看| 亚洲AV无码成人精品区在线观看 | 亚洲人成网站色在线入口 | 日本xxwwxxww在线视频免费| 亚洲精品视频免费| 亚洲天堂一区二区| 亚洲国产精品18久久久久久| 一级做性色a爰片久久毛片免费| 久久成人免费电影| 女人18毛片水最多免费观看| 亚洲无人区午夜福利码高清完整版 | 亚洲另类精品xxxx人妖| 色偷偷亚洲第一综合网| 日韩电影免费在线观看中文字幕| 国产精品久久亚洲不卡动漫| 在线播放亚洲精品| 99精品一区二区免费视频| 日韩免费无码一区二区视频 | 国产午夜无码视频免费网站| 亚洲成色在线综合网站 | 亚洲人成免费网站| 偷自拍亚洲视频在线观看99| 无码人妻精品中文字幕免费| 最新69国产成人精品免费视频动漫 | 日韩在线天堂免费观看| 亚洲国产精品va在线播放| 亚洲午夜精品久久久久久app| 精品国产免费一区二区三区| 大香人蕉免费视频75| 国产V亚洲V天堂无码久久久| 亚洲国产精品精华液| 久久国产精品成人片免费| 免费人妻无码不卡中文字幕18禁| 亚洲美女一区二区三区| 一级看片免费视频囗交| 成人免费视频观看无遮挡| 亚洲成A人片在线观看WWW|