国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

jQuery源碼分析之noConflict()

Yuanf / 1019人閱讀

摘要:將或者的控制權(quán)讓給第一個實現(xiàn)它的那個庫,確保不會與其它庫的對象發(fā)生沖突。

noConflict()

noConflict()將$或者jQuery的控制權(quán)讓給第一個實現(xiàn)它的那個庫,確保jQuery不會與其它庫的$對象發(fā)生沖突。

jQuery中源碼如下:

var _jQuery = window.jQuery,
    _$ = window.$;
jQuery.noConflict = function(deep){
    if(window.$ === jQuery){
        window.$ = _$;
    }
    if(deep && window.jQuery === jQuery){
    window.jQuery = _jQuery;
    }
};
分析源碼之前,我們應(yīng)該注意幾個點:

jQuery文件應(yīng)該在其它沖突庫文件之后導(dǎo)入;noConflict()必須在你導(dǎo)入jQuery文件之后使用;

導(dǎo)致沖突的庫中必須已經(jīng)存在一個$或者jQuery的命名空間,否則_jQuery = window.jQuery_$ = window.$就沒有意義了

下面開始分析源碼:

假如我們引入了兩個庫,prototype.js和jQuery.js。prototype.js在前,jQuery.js在后,并且prototype.js中存在一個$的命名空間

//這句代碼其實是在jQuery文件最開始的地方定義的,目的是保存prototype.js文件中的$或者jQuery命名空間
var _jQuery = window.jQuery,_$ = window.$;
jQuery.noConflict = function(deep){
//這里判斷如果當(dāng)前的window.$已經(jīng)被jQuery占用了,就把之前保存的prototype.js中的$的變量_$賦值給window.$進行覆蓋
    if(window.$ === jQuery){
        window.$ = _$;
    }
    //這里判斷如果deep為true并且當(dāng)前的window.jQuery也已經(jīng)被jQuery占用了,就把之前保存的prototype.js中的jQuery的變量_jQuery賦值給window.jQuery進行覆蓋
    if(deep && window.jQuery === jQuery){
    window.jQuery = _jQuery;
    }
};
分析完上面的源碼之后,這里有幾個點要思考一下:

為什么調(diào)用noConflict()之后我們發(fā)現(xiàn)window.$已經(jīng)等于jQuery了?

在jQuery代碼最后有一段代碼可以解釋這個問題:

if ( typeof window === "object" && typeof window.document === "object" ) {
    window.jQuery = window.$ = jQuery;
}

如果prototype.js中沒有沖突的命名空間,那調(diào)用noConflict()會怎么樣么?

如果之前沒有沖突的命名空間,那_&_jQuery都是undefined,所以window.$window.jQuery都會被undefined覆蓋;也就是說,只要調(diào)用了noConflict(),jQuery就會交出$或者jQuery的控制權(quán),無論之前有沒有命名空間沖突

參考資料:
http://www.imooc.com/learn/172

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/82439.html

相關(guān)文章

  • underscore源碼剖析整體架構(gòu)

    摘要:我這里有個不夠準(zhǔn)確但容易理解的說法,就是檢查一個對象是否為另一個構(gòu)造函數(shù)的實例,為了更容易理解,下面將全部以是的實例的方式來說。 underscore源碼分析之整體架構(gòu) 最近打算好好看看underscore源碼,一個是因為自己確實水平不夠,另一個是underscore源碼比較簡單,比較易讀。本系列打算對underscore1.8.3中關(guān)鍵函數(shù)源碼進行分析,希望做到最詳細(xì)的源碼分析。今...

    2shou 評論0 收藏0
  • 學(xué)習(xí) underscore 源碼整體架構(gòu),打造屬于自己的函數(shù)式編程類庫

    摘要:譯立即執(zhí)行函數(shù)表達式處理支持瀏覽器環(huán)境微信小程序。學(xué)習(xí)整體架構(gòu),利于打造屬于自己的函數(shù)式編程類庫。下一篇文章可能是學(xué)習(xí)的源碼整體架構(gòu)。也可以加微信,注明來源,拉您進前端視野交流群。 前言 上一篇文章寫了jQuery整體架構(gòu),學(xué)習(xí) jQuery 源碼整體架構(gòu),打造屬于自己的 js 類庫 雖然看過挺多underscore.js分析類的文章,但總感覺少點什么。這也許就是紙上得來終覺淺,絕知此...

    junnplus 評論0 收藏0
  • FE.SRC-逐行分析jQuery2.0.3源碼-完整筆記

    摘要:根據(jù)項目選型決定是否開啟。為了壓縮,可維護為了支持從而使用代替變量存儲防沖突會用到,形如版本號聲明最終調(diào)用的是這個原型實際上。功能檢測統(tǒng)一兼容性問題。 概覽 (function (){ (21 , 94) 定義了一些變量和函數(shù) jQuery=function(); (96 , 293) 給jQuery對象添加一些方法和屬性; (285 , 347) ...

    Lin_R 評論0 收藏0
  • FE.SRC-逐行分析jQuery2.0.3源碼-完整筆記

    摘要:根據(jù)項目選型決定是否開啟。為了壓縮,可維護為了支持從而使用代替變量存儲防沖突會用到,形如版本號聲明最終調(diào)用的是這個原型實際上。功能檢測統(tǒng)一兼容性問題。 概覽 (function (){ (21 , 94) 定義了一些變量和函數(shù) jQuery=function(); (96 , 293) 給jQuery對象添加一些方法和屬性; (285 , 347) ...

    褰辯話 評論0 收藏0
  • 淺析jQuery整體框架與實現(xiàn)(上)

    摘要:通常的做法是,為它們指定回調(diào)函數(shù)。請求返回請求返回請求返回異步隊列解耦異步任務(wù)和回調(diào)函數(shù)為模塊隊列模塊事件提供基礎(chǔ)功能。 前言 jQuery整體框架甚是復(fù)雜,也不易讀懂,這幾日一直在研究這個笨重而強大的框架。jQuery的總體架構(gòu)可以分為:入口模塊、底層模塊和功能模塊。這里,我們以jquery-1.7.1為例進行分析。 jquery的總體架構(gòu) 16 (function( window,...

    VEIGHTZ 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<