第二十二章 高級(jí)技巧

1. 作用域安全的構(gòu)造函數(shù):在進(jìn)行任何更改前挡闰,首先確認(rèn)this對(duì)象是正確類型的實(shí)例(鎖定可以使用構(gòu)造函數(shù)的環(huán)境碘举,避免在全局對(duì)象上意外設(shè)置屬性)。


2. 函數(shù)的惰性載入:函數(shù)執(zhí)行的分支僅會(huì)發(fā)生一次弛针。

? ? 實(shí)現(xiàn)惰性載入的兩種方式:

① 在函數(shù)被調(diào)用時(shí)再處理函數(shù)统抬。在第一次調(diào)用的過(guò)程中,該函數(shù)被覆蓋為另一個(gè)按合適方式執(zhí)行的函數(shù)灭贷,這樣任何對(duì)原函數(shù)的調(diào)用都不用再經(jīng)過(guò)分支

② 在聲明函數(shù)時(shí)就指定適當(dāng)?shù)暮瘮?shù)


3. 函數(shù)柯里化:把接受多個(gè)參數(shù)的函數(shù)變換成為接受一個(gè)參數(shù)的函數(shù)温学,并且返回接受余下參數(shù)而且返回結(jié)果的新函數(shù)的技術(shù)。

function curry(fn){ ?// ?fn為要進(jìn)行柯里化的函數(shù)

? ? ? ? var args = Array.prototype.slice.call(arguments, 1); ? // ?args包含了來(lái)自于fn函數(shù)外部的參數(shù)

? ? ? ? return function(){

? ? ? ? ? ? ? ? var innerArgs = Array.prototype.slice.call(arguments); ?// ?innerArgs包含了來(lái)自于fn函數(shù)內(nèi)部的參數(shù)

? ? ? ? ? ? ? ? var finialArgs = args.concat(innerArgs);

? ? ? ? ? ? ? ? return fn.apply(null, finalArgs);

? ? ? ? }

}


3. 柯里化函數(shù)動(dòng)態(tài)創(chuàng)建步驟:調(diào)用另一個(gè)函數(shù)并為它傳入要柯里化的函數(shù)和必要的參數(shù)


4. 定時(shí)器中( setTimeout() 和 setInterval() )甚疟,指定的時(shí)間間隔表示何時(shí)將定時(shí)器的代碼添加到隊(duì)列仗岖,而不是何時(shí)實(shí)際執(zhí)行代碼。


5. 數(shù)組分塊基本原理:為要處理的項(xiàng)目創(chuàng)建一個(gè)隊(duì)列览妖,然后使用定時(shí)器取出下一個(gè)要處理的項(xiàng)目進(jìn)行處理轧拄,接著再設(shè)置另一個(gè)定時(shí)器。其基本的模式:

function chunk(array, proccess, context){

? ? ? ? setTimeout(function(){

? ? ? ? ? ? ? ? var item = array.shift();

? ? ? ? ? ? ? ? process.call(context, item);

? ? ? ? ? ? ? ? if(array.length > 0){

? ? ? ? ? ? ? ? ? ? ? ? ?setTimeout(arguments.callee, 100);

? ? ? ? ? ? ? ? }

? ? ? ? }, 100);

}


6. 函數(shù)節(jié)流基本原理:某些代碼不可以在沒有間斷的情況連續(xù)重復(fù)執(zhí)行讽膏。第一次調(diào)用函數(shù)時(shí)檩电,創(chuàng)建一個(gè)定時(shí)器,在指定的時(shí)間間隔之后運(yùn)行代碼府树;第二次調(diào)用該函數(shù)時(shí)俐末,它會(huì)清除前一次的定時(shí)器并設(shè)置另一個(gè)。在resize事件中最常用奄侠。其基本模式:

function throttle(method, context){ // method為要執(zhí)行的函數(shù)卓箫,context為函數(shù)執(zhí)行的作用域

? ? ? ? clearTimeout(method.tId);

? ? ? ? method.tId = setTimeout(function(){ // 創(chuàng)建一個(gè)定時(shí)器,并將其ID存儲(chǔ)于方法的 tId 屬性中

? ? ? ? ? ? ? ? method.call(context);

? ? ? ? }, 100);

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末垄潮,一起剝皮案震驚了整個(gè)濱河市烹卒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌弯洗,老刑警劉巖甫题,帶你破解...
    沈念sama閱讀 212,599評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異涂召,居然都是意外死亡坠非,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門果正,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)炎码,“玉大人,你說(shuō)我怎么就攤上這事秋泳×氏校” “怎么了?”我有些...
    開封第一講書人閱讀 158,084評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵迫皱,是天一觀的道長(zhǎng)歉闰。 經(jīng)常有香客問(wèn)我辖众,道長(zhǎng),這世上最難降的妖魔是什么和敬? 我笑而不...
    開封第一講書人閱讀 56,708評(píng)論 1 284
  • 正文 為了忘掉前任凹炸,我火速辦了婚禮,結(jié)果婚禮上昼弟,老公的妹妹穿的比我還像新娘啤它。我一直安慰自己,他們只是感情好舱痘,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,813評(píng)論 6 386
  • 文/花漫 我一把揭開白布变骡。 她就那樣靜靜地躺著,像睡著了一般芭逝。 火紅的嫁衣襯著肌膚如雪塌碌。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,021評(píng)論 1 291
  • 那天旬盯,我揣著相機(jī)與錄音誊爹,去河邊找鬼。 笑死瓢捉,一個(gè)胖子當(dāng)著我的面吹牛频丘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播泡态,決...
    沈念sama閱讀 39,120評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼搂漠,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了某弦?” 一聲冷哼從身側(cè)響起桐汤,我...
    開封第一講書人閱讀 37,866評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎靶壮,沒想到半個(gè)月后怔毛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,308評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡腾降,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,633評(píng)論 2 327
  • 正文 我和宋清朗相戀三年拣度,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片螃壤。...
    茶點(diǎn)故事閱讀 38,768評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡抗果,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出奸晴,到底是詐尸還是另有隱情冤馏,我是刑警寧澤,帶...
    沈念sama閱讀 34,461評(píng)論 4 333
  • 正文 年R本政府宣布寄啼,位于F島的核電站逮光,受9級(jí)特大地震影響代箭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜涕刚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,094評(píng)論 3 317
  • 文/蒙蒙 一嗡综、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧副女,春花似錦蛤高、人聲如沸蚣旱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,850評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)塞绿。三九已至沟涨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間异吻,已是汗流浹背裹赴。 一陣腳步聲響...
    開封第一講書人閱讀 32,082評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留诀浪,地道東北人棋返。 一個(gè)月前我還...
    沈念sama閱讀 46,571評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像雷猪,于是被迫代替她去往敵國(guó)和親睛竣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,666評(píng)論 2 350

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