underscore.js 源碼閱讀_?總結(jié)1

underscore.js 是一個(gè)用于擴(kuò)展原生javascript功能和不足的第三方庫(kù),它提供的功能還是很基礎(chǔ),但是建起高樓大廈離不開(kāi)它腳下的基石。backbone.js是一個(gè)mvc框架,就是依賴這個(gè)庫(kù)燕侠。更多信息类咧,參考underscore官網(wǎng),也有翻譯的中文文檔

源碼注釋中文翻譯

立即函數(shù)和閉包

整個(gè)underscore.js文件就是一個(gè)立即函數(shù),它定義了一個(gè)函數(shù)并且立即執(zhí)行:

(function(){
    //...
    //_=function(){...};
    //...
}.call(this));

在這個(gè)立即函數(shù)中有很多的局部變量內(nèi)部函數(shù), 它們只能作用域只在這個(gè)立即函數(shù), 這樣做的好處是隱藏了一些庫(kù)功能的內(nèi)部實(shí)現(xiàn)嘲玫、減少全局變量的污染击纬、實(shí)現(xiàn)私有變量嘿歌。如實(shí)現(xiàn)一個(gè)生成唯一id的方法:

(function(){
    //...
     var idCounter = 0;                   //定義變量,這個(gè)變量在立即函數(shù)執(zhí)行完成后不能被訪問(wèn)
    _.uniqueId = function(prefix) {      //生成id的函數(shù)(閉包)
    var id = ++idCounter + '';
    return prefix ? prefix + id : id;
  };
    //...
}.call(this));

僅當(dāng)我們使用_.uniqueId()這個(gè)方法時(shí), 才能修改idCounter的值, 這樣就保證了我們產(chǎn)生的id是唯一的

_.noConflict()

在很多庫(kù)中比如jQuery, 一般情況下我們使用$作為JQ對(duì)象, 但是如果你還需要用例外一個(gè)庫(kù), 但是這個(gè)庫(kù)也是用$作為該庫(kù)的全局對(duì)象, 那么如何解決這樣的沖突?

一般的庫(kù)中都有noConflict()這個(gè)解決命名沖突的問(wèn)題, 那么它是怎么樣的原理?

_.noConflict()這個(gè)函數(shù)的功能是恢復(fù)原來(lái)的window._對(duì)象, 并返回Underscore對(duì)象的引用

實(shí)現(xiàn)原理:

var previousUnderscore = root._;  //程序一開(kāi)始就記錄window._對(duì)象
...
root._ = _;                 // 將_對(duì)象賦值給window._變量        
...
_.noConflict = function() {
    root._ = previousUnderscore;  //還原原來(lái)的window._對(duì)象
    return this;                  //返回underscore對(duì)象
};
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末馍管,一起剝皮案震驚了整個(gè)濱河市郭赐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌确沸,老刑警劉巖捌锭,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異罗捎,居然都是意外死亡观谦,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門桨菜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)豁状,“玉大人捉偏,你說(shuō)我怎么就攤上這事⌒汉欤” “怎么了夭禽?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)谊路。 經(jīng)常有香客問(wèn)我讹躯,道長(zhǎng),這世上最難降的妖魔是什么凶异? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任蜀撑,我火速辦了婚禮挤巡,結(jié)果婚禮上剩彬,老公的妹妹穿的比我還像新娘。我一直安慰自己矿卑,他們只是感情好喉恋,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著母廷,像睡著了一般轻黑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上琴昆,一...
    開(kāi)封第一講書(shū)人閱讀 51,708評(píng)論 1 305
  • 那天氓鄙,我揣著相機(jī)與錄音,去河邊找鬼业舍。 笑死抖拦,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的舷暮。 我是一名探鬼主播态罪,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼下面!你這毒婦竟也來(lái)了复颈?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤沥割,失蹤者是張志新(化名)和其女友劉穎耗啦,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體机杜,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡帜讲,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了叉庐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片舒帮。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出玩郊,到底是詐尸還是另有隱情肢执,我是刑警寧澤,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布译红,位于F島的核電站预茄,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏侦厚。R本人自食惡果不足惜耻陕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望刨沦。 院中可真熱鬧诗宣,春花似錦、人聲如沸想诅。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)来破。三九已至篮灼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間徘禁,已是汗流浹背诅诱。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留送朱,地道東北人娘荡。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像骤菠,于是被迫代替她去往敵國(guó)和親它改。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法商乎,類相關(guān)的語(yǔ)法央拖,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法鹉戚,異常的語(yǔ)法鲜戒,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,639評(píng)論 18 399
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,178評(píng)論 25 707
  • 拒絕思維懶惰,習(xí)慣于深度思考抹凳,永遠(yuǎn)不要用戰(zhàn)術(shù)上的勤奮掩蓋戰(zhàn)略上的懶惰. 有能力的人絕對(duì)不習(xí)慣于加班遏餐,不懂得深度思考...
    CharmingM9閱讀 178評(píng)論 0 1
  • 普通的文件上傳,文件上傳 必須在form表單里面添加 enctype='multipart/form-data'赢底。...
    西貝巴巴閱讀 625評(píng)論 0 0