JavaScript中的面向?qū)ο缶幊?/h1>

面向?qū)ο缶幊?/h1>

?面向?qū)ο缶幊蘋OM(Object-oriented programming)其實(shí)已經(jīng)是一種在編程界非常非常普及的概念,它的基本思想是:在程序里,通過使用對(duì)象去構(gòu)建現(xiàn)實(shí)世界的模型殿如,并對(duì)象把原本很難(或不可)能被使用的功能,簡單化并提供出來棍潘,以供訪問裕偿;
?簡單來說,在絕大部分編程語言中爪幻,面向?qū)ο缶幊痰膶?shí)現(xiàn)方式是通過“類(class)”來實(shí)現(xiàn)的菱皆,“類”實(shí)質(zhì)上就是一種使用代碼來對(duì)“對(duì)象”進(jìn)行的一種抽象概括。舉一個(gè)簡單的例子挨稿,如果我們面向的對(duì)象是一個(gè)學(xué)生仇轻,那么我們對(duì)學(xué)生構(gòu)建的這個(gè)“類”就有一定的屬性和方法,學(xué)生的姓名奶甘,年齡這些就是這個(gè)類的屬性篷店,代表學(xué)生的一些行為、相關(guān)的業(yè)務(wù)邏輯就是類的方法臭家。如果我們用Python來寫這樣一個(gè)關(guān)于學(xué)生的類疲陕,那么它就是下面這樣的:

class Student:
  #Python中通常將屬性寫在構(gòu)造函數(shù)__init__(self[,prop...])里
  def __init__(self,name,age,grade):
    self.name=name
    self.age=age
    self.grade=grade
  #定義類的方法
  def sayHi():
    print("Hello!,I'm "+self.name+".Nice to meet you!")
  def upgrade():
    self.grade+=1

JavaScript里的面向?qū)ο缶幊?/h1>

在MDN關(guān)于JS面向?qū)ο缶幊痰恼f法中,原話是這樣的

有些人認(rèn)為 JavaScript 不是真正的面向?qū)ο蟮恼Z言钉赁,比如它沒有像許多面向?qū)ο蟮恼Z言一樣有用于創(chuàng)建class類的聲明蹄殃。JavaScript 用一種稱為構(gòu)建函數(shù)的特殊函數(shù)來定義對(duì)象和它們的特征。

其實(shí)在ES6中JS新增了class關(guān)鍵字你踩,本文后面會(huì)提到诅岩。
那么JS是怎么用構(gòu)建函數(shù)(構(gòu)建函數(shù)和構(gòu)造函數(shù)是一回事)來創(chuàng)建類的,還是上面學(xué)生的類的例子

function Student(name,age,grade){
  this.name=name;
  this.age=age;
  this.grade=grade;
  this.sayHi=function(){
    console.log("Hello!,I'm "+this.name+".Nice to meet you!");
  }
  this.upgrade=function(){
    this.grade+=1;
  }
}

注意带膜,構(gòu)造函數(shù)和普通函數(shù)的區(qū)別在于普通函數(shù)可以直接調(diào)用吩谦,而構(gòu)造函數(shù)是需要用new關(guān)鍵字(如new Student())的,而且構(gòu)造函數(shù)體內(nèi)一定會(huì)有this關(guān)鍵字膝藕,使用構(gòu)造函數(shù)的好處是可以復(fù)用它來不停創(chuàng)建新的實(shí)例逮京,如果我們只是單純的創(chuàng)建一個(gè)實(shí)例化對(duì)象的話,我們可以直接通過Object()來new一個(gè)對(duì)象(其實(shí)不用Object也可以),然后添加屬性和方法即可

var Student1=new Object();
Student1.age=23;//age屬性不存在時(shí)這個(gè)語句可以直接為對(duì)象添加age屬性
Student.name='John Snow';
Student.grade=4;
Student.sayHi=function(){
    console.log("Hello!,I'm "+this.name+".Nice to meet you!");
}

也可以向Object()方法里傳入一個(gè)對(duì)象來創(chuàng)建對(duì)象(有種套娃的感覺)

var Student1=new Object({
    age:23,
    name:'John Snow',
    grade:4,
    sayHi:function(){
        console.log("Hello!,I'm "+this.name+".Nice to meet you!");
    }
});

JS里的class

JS的class關(guān)鍵字其實(shí)是ES6提出的束莫,ES6提出的這個(gè)JS class關(guān)鍵字其實(shí)將上面提到的構(gòu)造函數(shù)以class里的constructor實(shí)現(xiàn)了而已(就是換了個(gè)名字)

class Student{
    constructor(name,age,grade) {
        this.name=name;
        this.age=age;
        this.grade=grade
    }
    sayHi() {
        console.log("Hello!,I'm "+this.name+".Nice to meet you!");
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者

  • 序言:七十年代末懒棉,一起剝皮案震驚了整個(gè)濱河市草描,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌策严,老刑警劉巖穗慕,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異妻导,居然都是意外死亡逛绵,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門倔韭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來术浪,“玉大人,你說我怎么就攤上這事寿酌∫人眨” “怎么了?”我有些...
    開封第一講書人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵醇疼,是天一觀的道長硕并。 經(jīng)常有香客問我,道長秧荆,這世上最難降的妖魔是什么倔毙? 我笑而不...
    開封第一講書人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮乙濒,結(jié)果婚禮上陕赃,老公的妹妹穿的比我還像新娘。我一直安慰自己颁股,他們只是感情好么库,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著豌蟋,像睡著了一般廊散。 火紅的嫁衣襯著肌膚如雪桑滩。 梳的紋絲不亂的頭發(fā)上梧疲,一...
    開封第一講書人閱讀 49,741評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音运准,去河邊找鬼幌氮。 笑死,一個(gè)胖子當(dāng)著我的面吹牛胁澳,可吹牛的內(nèi)容都是我干的该互。 我是一名探鬼主播,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼韭畸,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼宇智!你這毒婦竟也來了蔓搞?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤随橘,失蹤者是張志新(化名)和其女友劉穎喂分,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體机蔗,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蒲祈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了萝嘁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片梆掸。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖牙言,靈堂內(nèi)的尸體忽然破棺而出酸钦,到底是詐尸還是另有隱情,我是刑警寧澤嬉挡,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布钝鸽,位于F島的核電站,受9級(jí)特大地震影響庞钢,放射性物質(zhì)發(fā)生泄漏拔恰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一基括、第九天 我趴在偏房一處隱蔽的房頂上張望颜懊。 院中可真熱鬧,春花似錦风皿、人聲如沸河爹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咸这。三九已至,卻和暖如春魔眨,著一層夾襖步出監(jiān)牢的瞬間媳维,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來泰國打工遏暴, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留侄刽,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓朋凉,卻偏偏與公主長得像州丹,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348