2018-08-17

說構(gòu)造函數(shù)的概念之前我們應(yīng)該先了解類的概念彻亲,類與對象的概念息息相關(guān)堕担,我們在講對象的概念的時候說過,一只貓是一個對象座掘,一個人是一個對象递惋,一章桌子也是一個對象柔滔,那么我們平時說的貓,人萍虽,桌子在沒有特定指出是哪一個對象的時候睛廊,我們其實說的就是類。我們身邊有人類杉编,貓也是 一個類超全,任何有相同屬性和方法的對象我們都可以稱他們?yōu)橐粋€類。

在很多面向?qū)ο笳Z言中都有類的概念邓馒,但是在javascript(es5)中沒有類嘶朱。而我們可以通過構(gòu)造函數(shù)來模擬一個類。

function Cat(){
this.name='miaomiao';
this.age=12;
this.sayName=function(){
console.log('我們是貓類');
}
}
var cat=new Cat();
console.log(cat.name);
cat.sayName();
構(gòu)造函數(shù)的函數(shù)名首字母大寫光酣,可以通過在函數(shù)中的this為類設(shè)置屬性和方法疏遏,我們在上面的代碼中為貓這個類定義了一個name屬性,并賦值為"miaomiao"救军,類創(chuàng)建完成后财异,我們可以通過new關(guān)鍵字創(chuàng)建這個類的實例。例如cat這個變量就是Cat類的一個實例唱遭。
我們可以通過傳參的方式戳寸,在實例化對象的時候為對象設(shè)置屬性

function Cat(name,age){
this.name=name;
this.age=age;
this.sayName=function(){
console.log('我是'+this.name);
}
}

var cat=new Cat('mioamiao',12);
cat.sayName();
console.log(cat);
一個構(gòu)造函數(shù)可以生成多個對象的實例

function Person(name,age){
this.name=name;
this.age=age;
this.say=function(){
console.log('大家好');
}
}
var lily=Person('lily',12);
var lucy=Person('lucy',13);
console.log(lily);
console.log(lucy);
console.log(lily.say==lucy.say);
一個構(gòu)造函數(shù)Person生成了兩個對象實例lily和lucy,并且有兩個屬性和一個方法拷泽。但是疫鹊,它們的hobby方法是不一樣的。也就是說跌穗,每當(dāng)你使用new來調(diào)用構(gòu)造函數(shù)放回一個對象實例的時候订晌,都會創(chuàng)建一個hobby方法虏辫。這既沒有必要蚌吸,又浪費資源,hobby方法完全可以被兩個對象實例共享砌庄。

構(gòu)造函數(shù)的缺點就是:同一個構(gòu)造函數(shù)的對象實例之間無法共享屬性或方法羹唠。

為了解決構(gòu)造函數(shù)的對象實例之間無法共享屬性的缺點,js提供了prototype屬性娄昆。
每一個構(gòu)造函數(shù)都有一個prototype屬性佩微,這個屬性指向一個原型對象,這個原型對象上的所有屬性和方法都可以被這個構(gòu)造函數(shù)的實例使用

function Person(name,age){
this.name=name;
this.age=age;
}
Person.prototype.hobby=function(){
return 'movie';
}
var girl=new Cat('rose',12);
var boy=new Cat('jack',18);
console.log(girl.hobby==boy.hobby);
如果將hobby方法放在原型對象上萌焰,那么兩個實例對象都共享著同一個方法哺眯。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市扒俯,隨后出現(xiàn)的幾起案子奶卓,更是在濱河造成了極大的恐慌一疯,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件夺姑,死亡現(xiàn)場離奇詭異墩邀,居然都是意外死亡,警方通過查閱死者的電腦和手機盏浙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門眉睹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人废膘,你說我怎么就攤上這事竹海。” “怎么了丐黄?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵站削,是天一觀的道長。 經(jīng)常有香客問我孵稽,道長许起,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任菩鲜,我火速辦了婚禮园细,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘接校。我一直安慰自己猛频,他們只是感情好严沥,可當(dāng)我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布蚓让。 她就那樣靜靜地躺著,像睡著了一般邦危。 火紅的嫁衣襯著肌膚如雪诽凌。 梳的紋絲不亂的頭發(fā)上毡熏,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天,我揣著相機與錄音侣诵,去河邊找鬼痢法。 笑死,一個胖子當(dāng)著我的面吹牛杜顺,可吹牛的內(nèi)容都是我干的财搁。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼躬络,長吁一口氣:“原來是場噩夢啊……” “哼尖奔!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤提茁,失蹤者是張志新(化名)和其女友劉穎仗嗦,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體甘凭,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡稀拐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了丹弱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片德撬。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖躲胳,靈堂內(nèi)的尸體忽然破棺而出蜓洪,到底是詐尸還是另有隱情,我是刑警寧澤坯苹,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布隆檀,位于F島的核電站,受9級特大地震影響粹湃,放射性物質(zhì)發(fā)生泄漏恐仑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一为鳄、第九天 我趴在偏房一處隱蔽的房頂上張望裳仆。 院中可真熱鬧,春花似錦孤钦、人聲如沸歧斟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽静袖。三九已至,卻和暖如春俊扭,著一層夾襖步出監(jiān)牢的瞬間队橙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工统扳, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留喘帚,地道東北人畅姊。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓咒钟,卻偏偏與公主長得像,于是被迫代替她去往敵國和親若未。 傳聞我的和親對象是個殘疾皇子朱嘴,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,472評論 2 348

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