2019-06-13 JS(構(gòu)造函數(shù)该编、new迄本、this)

(本文摘錄于阮一峰老師所寫文章,https://wangdoc.com/javascript/basic/index.html课竣,作個人學(xué)習(xí)使用嘉赎。)

構(gòu)造函數(shù)

1、JavaScript 語言的對象體系于樟,不是基于“類”的公条,而是基于構(gòu)造函數(shù)(constructor)和原型鏈(prototype)。
JavaScript 語言使用構(gòu)造函數(shù)(constructor)作為對象的模板迂曲。

2靶橱、為了與普通函數(shù)區(qū)別,構(gòu)造函數(shù)名字的第一個字母通常大寫路捧。

構(gòu)造函數(shù)的特點(diǎn)有兩個关霸。
(1)函數(shù)體內(nèi)部使用了this關(guān)鍵字,代表了所要生成的對象實(shí)例杰扫。
(2)生成對象的時候队寇,必須使用new命令。

new指令

3章姓、如果忘了使用new命令佳遣,直接調(diào)用構(gòu)造函數(shù)炭序,構(gòu)造函數(shù)就變成了普通函數(shù),并不會生成實(shí)例對象苍日。this這時代表全局對象惭聂。

4、使用new命令時相恃,它后面的函數(shù)依次執(zhí)行下面的步驟辜纲。
(1)創(chuàng)建一個空對象,作為將要返回的對象實(shí)例拦耐。
(2)將這個空對象的原型耕腾,指向構(gòu)造函數(shù)的prototype屬性。
(3)將這個空對象賦值給函數(shù)內(nèi)部的this關(guān)鍵字杀糯。
(4)開始執(zhí)行構(gòu)造函數(shù)內(nèi)部的代碼扫俺。

5、構(gòu)造函數(shù)內(nèi)部固翰,this指的是一個新生成的空對象狼纬,所有針對this的操作,都會發(fā)生在這個空對象上骂际。構(gòu)造函數(shù)之所以叫“構(gòu)造函數(shù)”疗琉,就是說這個函數(shù)的目的,就是操作一個空對象(即this對象)歉铝。
如果構(gòu)造函數(shù)內(nèi)部有return語句盈简,而且return后面跟著一個對象,new命令會返回return語句指定的對象太示;否則柠贤,就會不管return語句,返回this對象类缤。

6臼勉、函數(shù)內(nèi)部可以使用new.target屬性。如果當(dāng)前函數(shù)是new命令調(diào)用呀非,new.target指向當(dāng)前函數(shù)坚俗,否則為undefined镜盯。

7岸裙、構(gòu)造函數(shù)作為模板,可以生成實(shí)例對象速缆。但是降允,有時拿不到構(gòu)造函數(shù),只能拿到一個現(xiàn)有的對象艺糜。我們希望以這個現(xiàn)有的對象作為模板剧董,生成新的實(shí)例對象幢尚,這時就可以使用Object.create()方法。

this

8翅楼、this都有一個共同點(diǎn):它總是返回一個對象尉剩。this就是屬性或方法“當(dāng)前”所在的對象。

9毅臊、實(shí)質(zhì):
由于函數(shù)可以在不同的運(yùn)行環(huán)境執(zhí)行理茎,所以需要有一種機(jī)制,能夠在函數(shù)體內(nèi)部獲得當(dāng)前的運(yùn)行環(huán)境(context)管嬉。所以皂林,this就出現(xiàn)了,它的設(shè)計目的就是在函數(shù)體內(nèi)部蚯撩,指代函數(shù)當(dāng)前的運(yùn)行環(huán)境础倍。

10、this主要有以下幾個使用場合胎挎。
(1)全局環(huán)境:全局環(huán)境使用this沟启,它指的就是頂層對象window。
(2)構(gòu)造函數(shù):構(gòu)造函數(shù)中的this犹菇,指的是實(shí)例對象美浦。
(3)對象的方法:如果對象的方法里面包含this,this的指向就是方法運(yùn)行時所在的對象项栏。該方法賦值給另一個對象浦辨,就會改變this的指向。

【注意】(1)obj和obj.foo儲存在兩個內(nèi)存地址沼沈,稱為地址一和地址二流酬。obj.foo()這樣調(diào)用時,是從地址一調(diào)用地址二列另,因此地址二的運(yùn)行環(huán)境是地址一芽腾,this指向obj。
(2)數(shù)組的map和foreach方法页衙,允許提供一個函數(shù)作為參數(shù)摊滔。這個函數(shù)內(nèi)部不應(yīng)該使用this。固定函數(shù)內(nèi)部this的另一種方法是將this當(dāng)作foreach方法的第二個參數(shù)店乐,固定它的運(yùn)行環(huán)境艰躺。
(3)避免回調(diào)函數(shù)中的 this。

11眨八、綁定 this 的方法:JavaScript 提供了call腺兴、apply、bind這三個方法廉侧,來切換/固定this的指向页响。
(1)Function.prototype.call():函數(shù)實(shí)例的call方法篓足,可以指定函數(shù)內(nèi)部this的指向(即函數(shù)執(zhí)行時所在的作用域),然后在所指定的作用域中闰蚕,調(diào)用該函數(shù)栈拖。
(2)Function.prototype.apply():apply方法的作用與call方法類似,也是改變this指向没陡,然后再調(diào)用該函數(shù)辱魁。唯一的區(qū)別就是,它接收一個數(shù)組作為函數(shù)執(zhí)行時的參數(shù)诗鸭。apply方法的第一個參數(shù)也是this所要指向的那個對象染簇,如果設(shè)為null或undefined,則等同于指定全局對象强岸。
(3)Function.prototype.bind():bind方法用于將函數(shù)體內(nèi)的this綁定到某個對象锻弓,然后返回一個新函數(shù)。
bind方法每運(yùn)行一次蝌箍,就返回一個新函數(shù)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末青灼,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子妓盲,更是在濱河造成了極大的恐慌杂拨,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,681評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件悯衬,死亡現(xiàn)場離奇詭異弹沽,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)筋粗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評論 3 399
  • 文/潘曉璐 我一進(jìn)店門策橘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人娜亿,你說我怎么就攤上這事丽已。” “怎么了买决?”我有些...
    開封第一講書人閱讀 169,421評論 0 362
  • 文/不壞的土叔 我叫張陵沛婴,是天一觀的道長。 經(jīng)常有香客問我督赤,道長嘁灯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,114評論 1 300
  • 正文 為了忘掉前任够挂,我火速辦了婚禮旁仿,結(jié)果婚禮上藕夫,老公的妹妹穿的比我還像新娘孽糖。我一直安慰自己枯冈,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,116評論 6 398
  • 文/花漫 我一把揭開白布办悟。 她就那樣靜靜地躺著尘奏,像睡著了一般。 火紅的嫁衣襯著肌膚如雪病蛉。 梳的紋絲不亂的頭發(fā)上炫加,一...
    開封第一講書人閱讀 52,713評論 1 312
  • 那天,我揣著相機(jī)與錄音铺然,去河邊找鬼俗孝。 笑死,一個胖子當(dāng)著我的面吹牛魄健,可吹牛的內(nèi)容都是我干的赋铝。 我是一名探鬼主播,決...
    沈念sama閱讀 41,170評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼沽瘦,長吁一口氣:“原來是場噩夢啊……” “哼革骨!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起析恋,我...
    開封第一講書人閱讀 40,116評論 0 277
  • 序言:老撾萬榮一對情侶失蹤良哲,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后助隧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體筑凫,經(jīng)...
    沈念sama閱讀 46,651評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,714評論 3 342
  • 正文 我和宋清朗相戀三年并村,在試婚紗的時候發(fā)現(xiàn)自己被綠了漏健。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,865評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡橘霎,死狀恐怖蔫浆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情姐叁,我是刑警寧澤瓦盛,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站外潜,受9級特大地震影響原环,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜处窥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,211評論 3 336
  • 文/蒙蒙 一嘱吗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦谒麦、人聲如沸俄讹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽患膛。三九已至,卻和暖如春耻蛇,著一層夾襖步出監(jiān)牢的瞬間踪蹬,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評論 1 274
  • 我被黑心中介騙來泰國打工臣咖, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留跃捣,地道東北人。 一個月前我還...
    沈念sama閱讀 49,299評論 3 379
  • 正文 我出身青樓夺蛇,卻偏偏與公主長得像枝缔,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蚊惯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,870評論 2 361

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