<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 政治相關
    政治相關
    主站蜘蛛池模板: 亚洲精品高清国产一线久久| 免费一级毛片免费播放| 亚洲一区精品中文字幕| 久久精品成人免费看| 亚洲桃色AV无码| 中文字幕a∨在线乱码免费看| 亚洲国产成人精品91久久久 | 成全高清在线观看免费| 亚洲一区二区女搞男| 十八禁在线观看视频播放免费| 亚洲综合色婷婷七月丁香| 大胆亚洲人体视频| 污视频网站免费观看| 亚洲午夜精品久久久久久浪潮| 国产精品免费一区二区三区| 亚洲综合av永久无码精品一区二区 | 一个人免费视频在线观看www | 免费国产a国产片高清网站| 久久久久亚洲精品无码网址色欲| 国产精品二区三区免费播放心| 久久水蜜桃亚洲AV无码精品| 啊灬啊灬别停啊灬用力啊免费看| 污视频网站免费在线观看| 中文字幕一精品亚洲无线一区| 黄网站免费在线观看| 亚洲午夜电影一区二区三区| 夫妻免费无码V看片| 无遮挡国产高潮视频免费观看| 亚洲男人的天堂www| 国产成人精品免费午夜app| 亚洲av无码有乱码在线观看| 亚洲人成网站18禁止一区| 亚洲综合久久一本伊伊区| 大香人蕉免费视频75| jizz免费在线影视观看网站| 久久精品亚洲综合专区| 欧美三级在线电影免费| 一本久久免费视频| 亚洲免费中文字幕| 久久久久亚洲av成人无码电影 | 成人免费一区二区三区|