溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

好程序員分享面向?qū)ο蟾拍畹睦斫庖约癊S3和ES6中類的寫法

發(fā)布時間:2020-08-12 11:29:57 來源:ITPUB博客 閱讀:139 作者:好程序員IT 欄目:web開發(fā)

   好程序員 分享面向?qū)ο蟾拍畹睦斫庖约? ES3 ES6 中類的寫法 , 本文將從以下四個方面進行講解:

 

  1 、 面向?qū)ο蟮母拍?

 

  2 、 類和對象的概念

 

  3 、 ES6 中類的寫法

 

  4 、 ES3 中“類”的寫法

 

  以下為詳細內(nèi)容:

 

  1 、 面向?qū)ο蟮母拍?

 

  面向?qū)ο螅? IT 行業(yè)的地球人都知道很重要,很難理解,對于很多做過好幾年開發(fā)的人不見得對面向?qū)ο笸耆斫?。面向?qū)ο缶幊淌且环N編程思想,是基本沿用人類習(xí)慣性思維的一種編程思想。 ps :我給學(xué)生講課時,經(jīng)常問學(xué)生“編程為了什么”,學(xué)生說掙錢,為了更好的生活,我讓學(xué)生提高一下高度,最后就提升到了“為人民 ( ) 服務(wù)”了 ( 哈哈 ) ,此話不假。因為,編程就是要做信息化的事情,而信息化就是信息化整個社會,即把人類社會的各行各業(yè)都進行信息化,也就是為人類服務(wù)了。那么,既然要為人類服務(wù),解決人類社會的問題,那么,是不是該用人類的思維才對呀。

 

  我來分享一下我對面向?qū)ο蟮睦斫狻?

 

  比如,我們要創(chuàng)辦一個公司 ( 資金已經(jīng)到位 ) 。會按照以下步驟:

 

  首先,我們需要考慮的是,創(chuàng)辦公司需要哪些角色,如:總經(jīng)理,市場人員,技術(shù),售后,財務(wù),行政,進一步細化,總經(jīng)理的要求有:性別,年齡,經(jīng)驗,總經(jīng)理要負責(zé)公司的正常經(jīng)營和利潤的保證等等。市場人員的要求:性別,年齡,經(jīng)驗,市場人員要負責(zé)公司市場的拓展和業(yè)務(wù)的保證等等。技術(shù)人員的要求:性別,年齡,經(jīng)驗,能夠勝任技術(shù)方面的相關(guān)工作,如:要會用原生的 JS 寫插件,技術(shù)人員負責(zé)完成客戶的需求等等,這些都是對公司角色的描述,在面向?qū)ο缶幊趟枷胫校褪穷?,當? Javascript 是從 ES6 開始才提出了類的概念,以前的版本沒有類的概念,只有對象之說。

 

  其次,我們會想到,工作該如何開展。如:先得有總經(jīng)理,然后讓總經(jīng)理招聘市場人員了解市場,開拓市場,再招聘技術(shù)人員開發(fā)產(chǎn)品,產(chǎn)品快要成型時,招聘售后人員了解產(chǎn)品,準備售后的服務(wù)工作,財務(wù)人員也得跟上,這里面,也有團隊配合的體現(xiàn),比如,市場人員沒法給客戶講清楚具體的實現(xiàn)時,就需要技術(shù)人員配合市場人員給客戶講解等等。當然,每個公司的具體流程不太一樣,但是,都是同樣的道理。這些就是程序中的業(yè)務(wù)邏輯部分。

 

  比如,我們要創(chuàng)辦一個培訓(xùn)學(xué)校,會按照以下步驟:

 

  首先,我們需要考慮的是,創(chuàng)辦學(xué)校需要哪些角色,如:校長,市場人員,咨詢?nèi)藛T,講師,班主任,就業(yè)老師,財務(wù),行政等等。校長的要求:需要具備什么,能干什么 ; 市場人員的要求:有什么,能干什么 ; 講師的要求:有什么,能干什么 ; 等等,這些都是對公司角色的描述,在面向?qū)ο缶幊趟枷胫?,就是類,而“有什么”就是類的屬? ( 變量 ) ,“能干什么”就是類的方法 ( 函數(shù) ) 。

 

  其次,我們會想到,工作該如何開展,即工作流程。如:讓市場人員先做宣傳,學(xué)生如果想進一步了解,就需要咨詢師進行咨詢,咨詢完成后,學(xué)生覺得學(xué)習(xí) JS 確實不錯,就會報名進班,財務(wù)處收學(xué)費,班主任建立學(xué)生的學(xué)籍,進行班級日常管理 , 講師開始授課,解答學(xué)生的問題,學(xué)習(xí)完成后,就業(yè)老師把學(xué)生推薦給企業(yè),這里也能體現(xiàn)團隊配合,如:學(xué)生咨詢過程中,問到了比較深的技術(shù)問題,咨詢師解答不了,就需要找講師配合等等。在面向?qū)ο缶幊趟枷胫羞@就是大的業(yè)務(wù)邏輯,即程序邏輯。

 

  再比如,我們要完成講課這件事情,首先需要考慮,必須有桌椅板凳,電腦,投影儀,講師,學(xué)生等等,其次考慮,先買桌椅板凳,電腦,投影儀,學(xué)生進教室,講師進教室開始講課。

 

  在面向?qū)ο缶幊趟枷氤鰜碇?,我們更多用的是面向過程的編程思想。

 

  面向過程的編程思想和面向?qū)ο蟮木幊趟枷胗泻螀^(qū)別。面向過程首先著重考慮的是程序邏輯,其次考慮的是數(shù)據(jù)。而面向?qū)ο笫紫戎乜紤]的是數(shù)據(jù) ( 類和對象 ) ,其次考慮的是邏輯 ( 即業(yè)務(wù)邏輯 )

 

  單干與團隊協(xié)作:面向過程程序的執(zhí)行過程,更像是單干 ; 面向?qū)ο蟪绦虻膱?zhí)行過程,更像是現(xiàn)實生活中的團隊協(xié)作。所以,我們在描述面向過程程序的邏輯時,沒有主語 ( 語文的解釋 ) ,如:先干啥,再干啥,然后干啥,最后干啥。而描述面向?qū)ο蟮倪壿嫊r,有主語,如:誰先干啥,誰再干啥,然后誰干啥,最后誰干啥。

 

  面向?qū)ο笏枷氲暮诵木褪且磺薪詫ο?,完成任何功能,面對的最小單位都是對象,而不是基本?shù)據(jù)類型 ( 如:數(shù)字,布爾等等 )

 

  2 、 類和對象

 

  類和對象:在面向?qū)ο缶幊陶Z言中,經(jīng)常會聽到類和對象。類就是分類,就是類型,就是數(shù)據(jù)類型 ; 對象就是類的舉例,類的實例,就是變量或者常量。如:數(shù)字是數(shù)據(jù)類型,而 250 就是數(shù)字類型的一個例子 ; 人是數(shù)據(jù)類型 ( ) ,唐僧就是人的一個例子 ( 對象 ) 。

 

  對象就是復(fù)雜的數(shù)據(jù),如:人沒法用數(shù)字,布爾等基本類型描述,人是一個復(fù)雜的事物,由很多數(shù)據(jù)構(gòu)成。一個人有身份證號碼,姓名,性別,年齡,把這一切組合 ( 封裝 ) 起來才是個人,人由若干個基本類型的數(shù)據(jù)組成。但這遠遠還不夠,因為死人也具備這些屬性 ( 開個玩笑,為藝術(shù)獻身一下 ) ,人能吃飯,能工作,此時,這個人才活靈活現(xiàn)了,所以,對象里面包括數(shù)據(jù)和函數(shù) ; 數(shù)據(jù)又叫屬性,成員變量,函數(shù)又叫方法。在面向?qū)ο蟮氖澜缋?,?xí)慣上會叫屬性和方法,簡單理解:對象 = 變量 + 函數(shù)。

 

  綜上所述,面向?qū)ο笫且环N編程思想,而對象是復(fù)雜的數(shù)據(jù)類型,所以,面向?qū)ο缶褪?,面對的都是?fù)雜的數(shù)據(jù)類型,而不是單一的整型,布爾等基本類型,對象是由若干個基本類型的數(shù)據(jù)構(gòu)成,甚至對象里還有子對象,當然還有方法。

 

  注:以上所述的類和對象是 ES6 中的名詞

 

  3 、 ES6 中類和對象的代碼

 

  1) 、定義一個程序員類:

 

  class Programmer{

 

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

 

  constructor(name,sex,age){

 

  // 屬性

 

  this.name = name;

 

  this.sex = sex;

 

  this.age = age;

 

  }

 

  // 方法

 

  writeCode(str){

 

  alert(this.name+ ”在認真地寫著” +str);

 

  }

 

  }

 

  2) 、實例化一個程序員對象:

 

  Let p1 = new Programmer( “寶寶” , “男” ,25);// 這句話會調(diào)用 constructor () 函數(shù)

 

  p1.writeCode( “貪吃蛇” );

 

  以上代碼,和傳統(tǒng)面向?qū)ο缶幊陶Z言的寫法比較接近。對程序員來說,是福音。 Javascript 的代碼格式越來越接近傳統(tǒng)面向?qū)ο缶幊陶Z言的寫法。

 

  4 、 ES3 中“類”的寫法

 

  1) 、區(qū)分一個 ES3 ES6 的名詞:

 

  ES3 中沒有類的叫法。

 

  ES3 中的對象就是 ES6 中的類。

 

  ES3 中的實例就是 ES6 中的對象。

 

  2) ES3 中的的代碼

 

  用構(gòu)造函數(shù)的方式定義一個程序員對象 (ES6 中叫類 )

 

  function Programmer (name,sex,age){

 

  // 屬性

 

  this.name = name;

 

  this.sex = sex;

 

  this.age = age;

 

  }

 

  // 方法

 

  Programmer .prototype.writeCode(str){

 

  alert(this.name+ ”在認真地寫著” +str);

 

  }

 

  l 實例化一個程序員實例 (ES6 中叫對象 )

 

  Let p1 = new Programmer( “寶寶” , “男” ,25);// 這句話會調(diào)用 constructor () 函數(shù)

 

  p1.writeCode( “貪吃蛇” );

 

  對比 ES6 ES3 的寫法,你會發(fā)現(xiàn),實例化對象的代碼一模一樣,僅僅只是定義類的寫法不同。其實, ES6 class 的寫法只是個語法糖,相當于給 ES3 的寫法上增加了給一個外包裝。 ES6 class 寫法的背后還是 ES3 的寫法。只是程序員寫 ES6 的代碼時,更加接近傳統(tǒng)面向?qū)ο缶幊陶Z言 ( 如: java C++ ) 。這樣對于程序員來說,再去學(xué)習(xí)新的語言要容易得多 ; 另外, ES6 class 寫法更加方便閱讀。

 

  注:此篇文章的重點是理解面向?qū)ο缶幊趟枷搿?


向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI