js基礎

1.module.exports 初始值為一個空對象 {}
2.exports 是指向的 module.exports 的引用
3.require() 返回的是 module.exports 而不是 exports

常用寫法:exports = module.exports = {...} 等價于 module.exports = {...}和exports = module.exports

原理:module.exports 指向新的對象時,exports 斷開了與 module.exports 的引用贸宏,那么通過 exports = module.exports 讓 exports 重新指向 module.exports捍岳。

npm i express --save/npm i express -S (安裝 express讥巡,同時將 "express": "^4.14.0" 寫入 dependencies )
npm i express --save-dev/npm i express -D (安裝 express,同時將 "express": "^4.14.0" 寫入 devDependencies )
npm i express --save --save-exact (安裝 express,同時將 "express": "4.14.0" 寫入 dependencies )

第三種方式將固定版本號寫入 dependencies呆躲,建議線上的 Node.js 應用都采取這種鎖定版本號的方式捣卤,因為你不可能保證第三方模塊下個小版本是沒有驗證 bug 的忍抽,即使是很流行的模塊。

一段js在執(zhí)行之前董朝,瀏覽器在全局環(huán)境會先做一些準備工作:
1.給變量鸠项、函數(shù)表達式進行聲明,默認賦值為undefined子姜;

  1. 給this賦值祟绊;
    3.給函數(shù)聲明賦值;
    4.函數(shù)每次被調用哥捕,都會產(chǎn)生一個新的執(zhí)行上下文環(huán)境牧抽,函數(shù)體內的語句在執(zhí)行之前,arguments變量和函數(shù)的參數(shù)都已經(jīng)被賦值
    以上這些準備工作就稱之為執(zhí)行上下文或者執(zhí)行上下文環(huán)境遥赚;
    通俗定義:在執(zhí)行代碼之前,把將要用到的所有的變量都事先拿出來呼巴,有的直接賦值了,有的先用undefined占個空府瞄。

執(zhí)行上下文棧
正如我們所知鲸郊,執(zhí)行全局代碼時會產(chǎn)生一個執(zhí)行上下文環(huán)境秆撮,每次調用函數(shù)又會產(chǎn)生一個執(zhí)行上下文環(huán)境职辨。當函數(shù)調用完成時舒裤,這個上下文環(huán)境以及其中的數(shù)據(jù)都會被消除,再回到全局上下文環(huán)境伴鳖。處于活動狀態(tài)的執(zhí)行上下文環(huán)境只能有一個。其實這就是一個壓棧出棧的過程,稱之為執(zhí)行上下文棧脐往。


image.png

|| 和 &&
只要"||"前面為true,無論"||"后面是true還是false,結果都返回"||"前面的值
只要"&&"前面為false巷燥,無論"&&"后面是true還是false,結果都返回"&&"前面的值

call和apply:為了動態(tài)改變this的值而存在的钝腺,當一個對象沒有某個方法定硝,別的對象有這個方法毫目,我們又不想對這個對象重新定義一個一樣的方法星爪,我們就可以通過call或者apply來使用其他對象的方法來操作顽腾。


image.png

對象的含義:帶有屬性和方法的特殊數(shù)據(jù)類型。

函數(shù)和對象之間漓摩,不僅僅是包含和被包含的關系管毙,有一點雞生蛋檔蛋生雞的邏輯夭咬。

對象都是通過函數(shù)來創(chuàng)建的,函數(shù)又是一種對象掏湾,像var obj = {name:"xixi",age:12}這種新建對象的方法,其實是一種語法糖來的砚嘴,本質還是通過var obj = new Object();obj.name = "xx"...這種函數(shù)的方式來創(chuàng)建耸采。

每個函數(shù)都有一個叫做prototype的屬性虾宇,這個prototype的屬性值是一個對象,該對象默認的只有constructor的屬性搪泳,指向這個函數(shù)本身。每個對象都有一個proto,并且proto指向創(chuàng)建該對象的函數(shù)的prototype罚攀。
比如:
function Fn(){} var fn = new Fn() Fn是一個函數(shù)杯瞻,fn對象是從Fn()函數(shù)new出來的,這樣fn對象就可以調用Fn.prototype中的屬性是己。因為每一個對象都有一個隱藏的屬性“proto”又兵,這個屬性引用了創(chuàng)建這個對象的函數(shù)的prototype任柜。即:fn.proto === Fn.prototype

對象是被函數(shù)創(chuàng)建的卒废,函數(shù)是被Function(函數(shù))創(chuàng)建的。Function是被自身創(chuàng)建的宙地。

js中繼承是通過原型鏈來體現(xiàn)的摔认。訪問一個對象的屬性時,先在基本屬性中查找宅粥,如果沒有参袱,再沿著proto這條鏈向上找,這就是原型鏈∧ㄊ矗可以用hasOwnProperty函數(shù)來判斷一個對象的屬性到底是基本屬性還是繼承屬性剿牺。但是hasOwnProperty是從哪里來的呢?它是從Object.prototype中來的环壤。

由于所有的對象的原型鏈都會找到Object.prototype,因此所有的對象都會有Object.prototype的方法晒来,這就是所謂的“繼承”。每個函數(shù)都有call,apply方法郑现,都有l(wèi)ength,arguments,caller等屬性湃崩,這些都是繼承的。函數(shù)由Function函數(shù)創(chuàng)建接箫,因此繼承了Function.prototype中的方法攒读。

數(shù)組去重:


image.png

數(shù)組排序:數(shù)組的sort()方法默認是把所有的元素先轉化為字符串再排序,而字符串的排序是根據(jù)ASCLL碼排序的辛友,小寫字母a的ASCLL碼排在大寫字母之后薄扁。

冒泡排序:


image.png

快速排序:


image.png

其他排序方法:
通常規(guī)定,對于兩個元素x和y瞎领,如果認為x < y泌辫,則返回-1;如果x == y九默,則返回0震放;如果x > y;則返回1驼修。這樣排序算法就不用關心具體的比較過程殿遂,而是根據(jù)比較結果直接排序。但是需要注意的事這個方法需要忽略大小寫乙各。


image.png

原型對象的結構
Function.prototype = {
constructor : Function,
proto : parent prototype (原型指針墨礁,指向上一級的原型對象),
some prototype properties : 一些原型屬性
}
解釋:函數(shù)的原型對象的constructor默認指向函數(shù)本身耳峦,原型對象除了有原型屬性外恩静,為了實現(xiàn)繼承,還有一個原型鏈指針proto蹲坷,該指針指向上一層的原型對象驶乾,而上一層的原型對象的結構依然類似,這樣利用proto一直指向Object的原型對象上循签,而Object的原型對象Object.prototype.proto = null表示原型鏈的最頂端级乐,如此便形成了JavaScript的原型鏈繼承,同時也結識了為什么所有的JavaScript對象都具有Object的基本方法县匠。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末风科,一起剝皮案震驚了整個濱河市撒轮,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌贼穆,老刑警劉巖题山,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異故痊,居然都是意外死亡臀蛛,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門崖蜜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來浊仆,“玉大人,你說我怎么就攤上這事豫领÷帐粒” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵等恐,是天一觀的道長洲劣。 經(jīng)常有香客問我,道長课蔬,這世上最難降的妖魔是什么囱稽? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮二跋,結果婚禮上战惊,老公的妹妹穿的比我還像新娘。我一直安慰自己扎即,他們只是感情好吞获,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著谚鄙,像睡著了一般各拷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上闷营,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天烤黍,我揣著相機與錄音,去河邊找鬼傻盟。 笑死,一個胖子當著我的面吹牛莫杈,可吹牛的內容都是我干的互例。 我是一名探鬼主播奢入,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼筝闹,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起罗珍,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤始衅,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后议双,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體痘番,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年平痰,在試婚紗的時候發(fā)現(xiàn)自己被綠了汞舱。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡宗雇,死狀恐怖昂芜,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情赔蒲,我是刑警寧澤泌神,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站舞虱,受9級特大地震影響欢际,放射性物質發(fā)生泄漏。R本人自食惡果不足惜矾兜,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一损趋、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧椅寺,春花似錦舶沿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至溉旋,卻和暖如春畸冲,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背观腊。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工邑闲, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人梧油。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓苫耸,卻偏偏與公主長得像,于是被迫代替她去往敵國和親儡陨。 傳聞我的和親對象是個殘疾皇子褪子,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內容

  • JavaScript 面試 JS基礎篇 變量類型和計算 JS中使用typeof能得到哪些類型-undefinded...
    AuthorJim閱讀 315評論 0 2
  • ES6中常見語法規(guī)定和關鍵字 常見語法 1.定義函數(shù):不需要function也能定義一個函數(shù)量淌,更加簡便。2.以前的...
    GracefuIIy閱讀 333評論 0 2
  • 首次發(fā)表在:JS基礎—原型對象的那些事(一) 談起js的基礎嫌褪,繞不過去的坎就是:原型鏈呀枢、作用域鏈、this(em....
    諾頓遺跡閱讀 438評論 4 6
  • “老師為什么要給我們蘋果?” “因為明天是平安夜啊缨伊,吃蘋果就會平平安安罢獭!” “平安夜是啥刻坊?” “平安夜就是圣誕節(jié)...
    非法入境閱讀 320評論 2 1
  • 今天是九月里第一天練習泣侮, 我要培訓這個愛好。
    我心我愿秀閱讀 132評論 0 4