JS面向?qū)ο?-構(gòu)造函數(shù)

至今我們學(xué)習(xí)了很多調(diào)用函數(shù)的方式:
圓括號直接調(diào)用
對象打點(diǎn)調(diào)用
定時器調(diào)用
事件處理函數(shù)調(diào)用
數(shù)組枚舉調(diào)用

他們體現(xiàn)的不同點(diǎn)就是函數(shù)上下文不同 他們的this不一樣

現(xiàn)在我們學(xué)習(xí)新的函數(shù)調(diào)用方法柒昏,用new運(yùn)算符來調(diào)用函數(shù)

試著用new運(yùn)算符調(diào)用一個函數(shù):

function fun(){
  alert("你好")
}
new fun(); //你好  

函數(shù)可以執(zhí)行
也就是說new是一個全新的調(diào)用函數(shù)的方式
我們關(guān)心的是垂券,這個函數(shù)的上下文是

function fun(){
 // alert(this)   //object object
  this.name ="小明";
  this.age = 12;
  this.sex="男";

}
var obj = new fun(); 
alert(obj.age);   //12
//console.log(obj);  //fun{name:"小明",age:"12",”sex:"男"}

用new運(yùn)算符調(diào)用一個函數(shù)的時候 ,會經(jīng)歷四步走
1,函數(shù)內(nèi)部悄悄的創(chuàng)建一個局部變量,是一個空對象{}
2, 函數(shù)將自己的上下文設(shè)置為這個{},即所有語句中的this就表示這個空對象
3,函數(shù)將執(zhí)行所有語句
4,所有語句執(zhí)行后,函數(shù)將return這個對象惫皱,函數(shù)將把自己的上下文返回.

所以,遇見new操作符尤莺,馬上想起四步走

目前為止逸吵,我們發(fā)現(xiàn),這個new運(yùn)算符能夠調(diào)用函數(shù)缝裁,還能返回一個對象 扫皱,
//構(gòu)造函數(shù)足绅,可以當(dāng)做一個”類“ ,描述的是一類對象需要擁有的屬性

function People(name,age,sex){
 // alert(this)   //object object
  this.name = name;
  this.age = age;
  this.sex=sex;

}
//類的實例
var xiaoming = new People("小明","12","男");
var xiaohong = new People("小紅","15","女");
console.log(xiaoming);   //fun{name:"小明",age:"12",”sex:"男"}

console.log(xiaohong);

我們發(fā)現(xiàn)用new操作符韩脑,可以返回具有相同屬性群的對象氢妈。
我們說,Peoples可以認(rèn)為是一個”類“段多,xiaomming ,xiaohong,xiaoqing都是這個類的”實例“(instance)首量。
JS中沒有類的概念,我們這里只有JAVA C++ C#做一個類比进苍,JS中只有構(gòu)造函數(shù)加缘。當(dāng)一個函數(shù)被new操作符調(diào)用的時候,這個函數(shù)就是一個構(gòu)造函數(shù)觉啊,它總能返回一類具有相同屬性群的對象拣宏,感覺在”構(gòu)造東西“,所以這個函數(shù)很神奇杠人,像一個模子勋乾,在制作類似的對象。
為了提醒其他程序員嗡善,這是一個必須用new調(diào)用的函數(shù)辑莫,換句話說提醒別人這是一個構(gòu)造函數(shù),這類函數(shù)的名字必須首字母大寫罩引。

我們看不用new操作符調(diào)用構(gòu)造函數(shù)會發(fā)生什么 ;

function People(name,age,sex){
 // alert(this)   //object object
  this.name = name;
  this.age = age;
  this.sex=sex;

}
People("小明","12","男");
alert(age);     //12

由于我們直接調(diào)用了構(gòu)造函數(shù)各吨,此時就是標(biāo)準(zhǔn)的函數(shù)直接加圓括號調(diào)用 ,函數(shù)里面的this是window對象袁铐,所以揭蜒,此時name age sex 都被設(shè)置成了window對象的屬性,我們知道window對象的屬性是全局變量昭躺。此時能夠彈出12.

JS中沒有Class關(guān)鍵字(ECMAScript2016增加了Class關(guān)鍵字),我們就是使用new操作符的時候伪嫁,會按"四步走"創(chuàng)建一些具有相同屬性群的實例领炫,些時就感覺有了”類“,JS只提”構(gòu)造函數(shù)‘张咳,不提“類”帝洪。

Javascript不是一個面向?qū)ο螅∣O)的語言,它只是基于對象(bo).

小題目:

function fun(){}
這個函數(shù)是不是一個構(gòu)造函數(shù)?答案是不知道脚猾,因為只要用new操作符調(diào)用一個函數(shù)葱峡,此時這個函數(shù)就是一個構(gòu)造函數(shù)。至于函數(shù)名字沒有大寫龙助,那只是習(xí)慣砰奕,不是語言要求

再來,這個函數(shù)是不是構(gòu)造函數(shù):

function People(name,age){
  this.name = name;
  this.age = age;
}

答案也是不確定!因為用new調(diào)用它就是一個構(gòu)造函數(shù)军援,不用new調(diào)用就不是

var obj = People("小明",12);

函數(shù)根本就沒有返回值仅淑,此時obj就是Null

obj == null  //true
obj.age;    //報錯

**所以構(gòu)造函數(shù)沒有什么 ,就是全新的函數(shù)調(diào)用方式 **

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末胸哥,一起剝皮案震驚了整個濱河市涯竟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌空厌,老刑警劉巖庐船,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異嘲更,居然都是意外死亡筐钟,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進(jìn)店門哮内,熙熙樓的掌柜王于貴愁眉苦臉地迎上來盗棵,“玉大人,你說我怎么就攤上這事北发∥埔颍” “怎么了?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵琳拨,是天一觀的道長瞭恰。 經(jīng)常有香客問我,道長狱庇,這世上最難降的妖魔是什么惊畏? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮密任,結(jié)果婚禮上颜启,老公的妹妹穿的比我還像新娘。我一直安慰自己浪讳,他們只是感情好缰盏,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著淹遵,像睡著了一般口猜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上透揣,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天济炎,我揣著相機(jī)與錄音,去河邊找鬼辐真。 笑死须尚,一個胖子當(dāng)著我的面吹牛崖堤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播恨闪,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼倘感,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了咙咽?” 一聲冷哼從身側(cè)響起老玛,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎钧敞,沒想到半個月后蜡豹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡溉苛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年镜廉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片愚战。...
    茶點(diǎn)故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡娇唯,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出寂玲,到底是詐尸還是另有隱情塔插,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布拓哟,位于F島的核電站想许,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏断序。R本人自食惡果不足惜流纹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望违诗。 院中可真熱鬧漱凝,春花似錦、人聲如沸诸迟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽亮蒋。三九已至扣典,卻和暖如春妆毕,著一層夾襖步出監(jiān)牢的瞬間慎玖,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工笛粘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留趁怔,地道東北人湿硝。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像润努,于是被迫代替她去往敵國和親关斜。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評論 2 351

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

  • 參考文檔++Javascript面向?qū)ο缶幊蹋ǘ簶?gòu)造函數(shù)的繼承今天要介紹的是铺浇,對象之間的"繼承"的五種方法痢畜,怎...
    day_day_up閱讀 123評論 0 0
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法鳍侣,內(nèi)部類的語法丁稀,繼承相關(guān)的語法,異常的語法倚聚,線程的語...
    子非魚_t_閱讀 31,602評論 18 399
  • 一线衫、面向過程和面向?qū)ο蟮膮^(qū)別、聯(lián)系 1.面向過程編程:注重解決問題的步驟,分析問題需要的每一步,實現(xiàn)函數(shù)依次調(diào)用惑折。...
    空谷悠閱讀 897評論 1 11
  • 普通創(chuàng)建對象和字面量創(chuàng)建對象不足之處:雖然 Object 構(gòu)造函數(shù)或?qū)ο笞置媪慷伎梢杂脕韯?chuàng)建單個對象授账,但這些方式有...
    believedream閱讀 2,368評論 2 18
  • 從9月18日到今天,可以說這周是開學(xué)以來最忙碌的惨驶!周一晚上整理了創(chuàng)文材料白热,那天正好婆婆回老家,我得自己帶...
    匆匆十年閱讀 217評論 0 1