Javascript語(yǔ)言精粹

String.slice(start, end)

end 均可選蒸痹,默認(rèn)為數(shù)組長(zhǎng)度

參數(shù)若為負(fù)數(shù)時(shí)观腊,則從后選取,沒(méi)有任何理由使用string.substring(start, end)

沒(méi)有任何理由去使用

與array.slice() 不同在于,數(shù)組的該方法第一個(gè)參數(shù)也非必須幔虏,默認(rèn)從第一位開(kāi)始記

對(duì)象

hasOwnProperty(),?檢查對(duì)象原有屬性,obj1.hasOwnProperty(‘name’) 返回布爾值贝椿,不會(huì)訪問(wèn)原型鏈

for… in,?枚舉想括,將會(huì)枚舉所有屬性包括函數(shù)和原型中的屬性,可以過(guò)濾烙博。 for (name in obj) { if (type of obj[name !==?“function” && obj.hasOwnProperty(‘name’) {// }瑟蜈,通過(guò)for in 循環(huán)獲得的順序是不確定的,更好的做法是數(shù)組列舉出想要的屬性名渣窜,通過(guò)for遍歷數(shù)組铺根。

.delete,?刪除對(duì)象屬性,從而暴露原型對(duì)象屬性乔宿, delete obj.name

減少全局變量污染位迂,為你的應(yīng)用只創(chuàng)建一個(gè)唯一的全局對(duì)象。var MYAPP = {}; MYAPP.stooge = {};

四種調(diào)用模式

調(diào)用一個(gè)函數(shù)會(huì)暫停當(dāng)前函數(shù)的執(zhí)行,傳遞控制權(quán)和參數(shù)給新的函數(shù)掂林。除了聲明時(shí)定義的形式參數(shù)臣缀,每個(gè)函數(shù)還接收兩個(gè)附加參數(shù):this 和argument。this的值取決于調(diào)用模式泻帮。

方法調(diào)用模式精置。調(diào)用表達(dá)式包含一個(gè)提取屬性的動(dòng)作“.”或“[]”。方法可以使用this訪問(wèn)自己所屬的對(duì)象锣杂,this對(duì)對(duì)象的綁定發(fā)生在調(diào)用的時(shí)候脂倦,通過(guò)this可取得所屬對(duì)象的方法稱(chēng)為公共方法。

函數(shù)調(diào)用模式蹲堂。當(dāng)一個(gè)函數(shù)并非當(dāng)作屬性時(shí)狼讨,就被當(dāng)做函數(shù)來(lái)調(diào)用,this被綁定到全局對(duì)象柒竞。外部函數(shù)可以通過(guò)將上下文通過(guò)變量賦值政供,供內(nèi)部函數(shù)訪問(wèn),內(nèi)部函數(shù)直接訪問(wèn)的this將是全局對(duì)象朽基。

構(gòu)造器調(diào)用模式布隔。new 構(gòu)造函數(shù),this綁定到通過(guò)new創(chuàng)建的新對(duì)象上稼虎。一個(gè)函數(shù)創(chuàng)建的目的就是希望通過(guò)new前綴愛(ài)調(diào)用衅檀,那它就被稱(chēng)為構(gòu)造器函數(shù)。

apply調(diào)用模式霎俩。接收兩個(gè)參數(shù)哀军,第一個(gè)是要綁定給this的值,第二個(gè)是參數(shù)數(shù)組打却。

返回

如果函數(shù)調(diào)用時(shí)在前面加上了new前綴杉适,且返回值不是一個(gè)對(duì)象,則返回this該新對(duì)象柳击。

擴(kuò)充類(lèi)型的功能

通過(guò)對(duì)Object.prototype添加方法使得該方法對(duì)所有函數(shù)可用猿推。

Function.prototype.method = function(name, func) {

this.prototype[name] = func;

return this;

}

下次給函數(shù)添加方法時(shí)就可以省略prototype幾個(gè)字,如Number.method(‘integer’, function(){})

通過(guò)給基本類(lèi)型增加方法捌肴,可以極大的提高語(yǔ)言的表現(xiàn)力蹬叭,原型繼承的動(dòng)態(tài)本質(zhì),新的方法立刻被賦予到所有對(duì)象實(shí)例上状知,即便方法實(shí)例在添加之前已經(jīng)創(chuàng)建好了秽五。

基本類(lèi)型是公用的結(jié)構(gòu),更好的做法是在沒(méi)有該方法名時(shí)才去創(chuàng)建

Function.prototype.method = function(name, func) {

if(!this.prototype[method]) {//不存在方法時(shí)再創(chuàng)建

this.prototype[name] = func;

return this;

}

}

作用域

在函數(shù)中的參數(shù)和變量试幽,在函數(shù)外部是不可見(jiàn)的筝蚕,而在函數(shù)內(nèi)部任何位置定義的變量卦碾,在該函數(shù)內(nèi)部任何地方都可見(jiàn)。

閉包

函數(shù)可以訪問(wèn)它被創(chuàng)建時(shí)的上下文環(huán)境起宽。內(nèi)部函數(shù)擁有比它的外部函數(shù)更長(zhǎng)的生命周期洲胖?

for(i=0; i

nodes[i].onclick = function(e) {

alert(i)//事件處理器綁定了變量i自身,而不是函數(shù)在構(gòu)造時(shí)的變量i

}

}

改造后:

var helper = function(i) {

return function(e) {

alert(i)

}

}

var i;

for (i = 0; i < nodes.length; i++) {

nodes[i].onclick = helper(i)//輔助函數(shù)保留了當(dāng)前的i坯沪;

}

模塊模式

模塊模式的一般形式绿映,一個(gè)定義了私有變量和函數(shù)的函數(shù),利用閉包創(chuàng)建可以訪問(wèn)私有變量和函數(shù)的特權(quán)函數(shù)腐晾,最后返回特權(quán)函數(shù)叉弦,或保存到可以訪問(wèn)的地方。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末藻糖,一起剝皮案震驚了整個(gè)濱河市淹冰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌巨柒,老刑警劉巖樱拴,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異洋满,居然都是意外死亡晶乔,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)牺勾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)正罢,“玉大人,你說(shuō)我怎么就攤上這事驻民》撸” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵回还,是天一觀的道長(zhǎng)呛占。 經(jīng)常有香客問(wèn)我,道長(zhǎng)懦趋,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任疹味,我火速辦了婚禮仅叫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘糙捺。我一直安慰自己诫咱,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布洪灯。 她就那樣靜靜地躺著坎缭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上掏呼,一...
    開(kāi)封第一講書(shū)人閱讀 51,692評(píng)論 1 305
  • 那天坏快,我揣著相機(jī)與錄音,去河邊找鬼憎夷。 笑死莽鸿,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的拾给。 我是一名探鬼主播祥得,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蒋得!你這毒婦竟也來(lái)了级及?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤额衙,失蹤者是張志新(化名)和其女友劉穎饮焦,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體入偷,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡追驴,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了疏之。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片殿雪。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖锋爪,靈堂內(nèi)的尸體忽然破棺而出丙曙,到底是詐尸還是另有隱情,我是刑警寧澤其骄,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布亏镰,位于F島的核電站,受9級(jí)特大地震影響拯爽,放射性物質(zhì)發(fā)生泄漏索抓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一毯炮、第九天 我趴在偏房一處隱蔽的房頂上張望逼肯。 院中可真熱鬧,春花似錦桃煎、人聲如沸篮幢。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)三椿。三九已至缺菌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間搜锰,已是汗流浹背伴郁。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留纽乱,地道東北人蛾绎。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像鸦列,于是被迫代替她去往敵國(guó)和親租冠。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

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

  • 工廠模式類(lèi)似于現(xiàn)實(shí)生活中的工廠可以產(chǎn)生大量相似的商品薯嗤,去做同樣的事情顽爹,實(shí)現(xiàn)同樣的效果;這時(shí)候需要使用工廠模式。簡(jiǎn)單...
    舟漁行舟閱讀 7,769評(píng)論 2 17
  • 首發(fā)于:segmentfault《JavaScript語(yǔ)言精粹 修訂版》 讀書(shū)筆記 之前看到這篇文章骆姐,前端網(wǎng)老姚淺...
    若川i閱讀 877評(píng)論 0 3
  • 第二章 語(yǔ)法 數(shù)字 JavaScript 只有一個(gè)數(shù)字類(lèi)型镜粤,它在內(nèi)部被表示為64位的浮點(diǎn)數(shù),和Java的doubl...
    SongLiang閱讀 353評(píng)論 0 0
  • 語(yǔ)法 1.數(shù)字 a. javascript只有一種數(shù)字類(lèi)型玻褪,表示64位的浮點(diǎn)數(shù)肉渴,避免了短整型的溢出問(wèn)題。1和1.0...
    theCoder閱讀 201評(píng)論 0 1
  • 一带射、調(diào)用 方法調(diào)用模式 當(dāng)一個(gè)函數(shù)被保存為對(duì)象的一個(gè)屬性時(shí)同规,我們稱(chēng)它為一個(gè)方法。如果調(diào)用表達(dá)式包含一個(gè)提取屬性的動(dòng)...
    韓寶億閱讀 1,639評(píng)論 8 5