自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

怎樣用Javascript定義一個類

開發(fā) 前端
很多人都寫過這樣的代碼,對,沒錯,就是如下代碼,清晰的不能再清晰了,就是一個關鍵字 function,然后定義一個方法名,方法名后緊跟一對括號。如果你在項目中寫過這樣的代碼,那么祝賀你,你可以不費任何吹毛之力,就能一口氣讀完這篇博文了。

其實Javascript中沒有類這個定義,但是有類這個概念。很多人都寫過這樣的代碼,對,沒錯,就是如下代碼,清晰的不能再清晰了,就是一個關鍵字 function,然后定義一個方法名,方法名后緊跟一對括號。如果你在項目中寫過這樣的代碼,那么祝賀你,你可以不費任何吹毛之力,就能一口氣讀完這篇博文了。

  1. function Print() {  
  2.      ……  
  3.  } 

當我們在寫c#代碼,焦頭爛額,無從下手的時候,至少我們還是可以厚著臉皮在老板的面前,敲出華麗的 class ***{},是的,沒錯,就這幾個字符。殊不知這這幾個字符體現(xiàn)出來的境界。說淺些,我會敲鍵盤寫代碼,說深些,我有可能理解了面向?qū)ο蟮木幊?,至少我會定義一個類。是這樣的,c#中定義一個類是用class。

有一天,老板變態(tài)了,讓我用Javascript來定義一個類,我無從下手呀,我平時都是用$("."),$("#")的人物呀,思考良久,我還模糊的記的document.getElementById("")這個東西,但是好像與Javascript的類扯不上關系呀。怎么辦?問了google問百度啊,***在一個角落,找到了定義Javascript類的E文。仔細一閱,難道這是一個坑嗎?明明用function定義了一個方法,活生生的把它說成一個類,反復幾次Google百度后,有點懷疑了,難道Javascript中定義一個類,真的是用function?其實沒錯,在Javascript中,定義一個類是用fucntion() ***{}。不管是在學校的菜鳥,還是國外的***程序員,在這件事上是平等的,想定義一個Javascript的類,就必須得先敲下function ***(){}。

在定義Javascript類上,表現(xiàn)形勢上大家雖然是平等的,都是用function ***(){}。但實質(zhì)上,確是蘊含著大量的學問。也許有些朋友到目前為止,是不是感覺我說的太簡單了,那我們就在這個function上玩點花樣。

  1. function Dog(category, name, age) {  
  2.     this.Category = category;  
  3.     this.Name = name;  
  4.     this.Age = age;  

一個Javascript類就這樣定義完成了,現(xiàn)在就可以自豪的說,我會面向?qū)ο蟮氖址ň幎↗avascript代碼了。

類定義好了,那我們怎么樣來用這個類呢?其實用法和C#的用法很像。

  1. var dog01 = new Dog("狗類""土狗", 2);  
  2. var dog02 = new Dog("狗類""黃狗", 5); 

有些朋友要拍磚了,這么簡單的東西,都拿出來說,那我們不妨再來進階一下。我上邊的代碼,實例化了兩個對象,一個是dog01,dog01下邊那個是dog02。因為dog01的Cateogry太口語化了,我要修改為dog01.Categry = '犬類',這樣聽起來是不是舒服多了,這是一個很簡單的事,我們僅僅需要為dog01的Cateogry重賦值就可以了。我們修改了dog01的Cateory, dog02的Category會跟著變嗎?答案是肯定的,不會變,如果有變,肯定有鬼。那我們有沒有方法讓dog01,dog02這些對象的Cateogry屬性共用起來呢?也就是說當我修改了Category屬性,不管是dog01,還是dog02都跟一樣的變,我們不妨來這樣寫寫。

  1. function Dog(name,age) {  
  2.     this.Name = "";  
  3.     this.Age = "";  
  4. }  
  5. Dog.prototype.Category = "狗類";  
  6. var dog01 = new Dog("土狗",2);  
  7. var dog02 = new Dog("黃狗",5);  
  8. alert(dog01.Category);  
  9. alert(dog02.Category);  
  10. Dog.prototype.Category = "犬類";  
  11. alert(dog01.Category);  
  12. alert(dog02.Category); 

當我們修改Dog.prototype.Category的時候,dog01,dog02的屬性都跟著神奇的變了。是不是有點類似于C#中的static。

當你已經(jīng)耐心的看到這兒的時候,我相信對朝九晚五的寫$("."),$("#")的朋友指明了一個方向。如果我寫的這些你已經(jīng)知道了,你可以去看看阮一峰寫的 Javascript定義類的幾種方法:http://www.ruanyifeng.com/blog/2012/07/three_ways_to_define_a_javascript_class.html

原文鏈接:http://www.cnblogs.com/xcj26/archive/2013/04/08/3006023.html

責任編輯:林師授 來源: 博客園
相關推薦

2022-03-07 09:20:00

JavaScripThree.jsNFT

2024-11-14 13:19:21

Docker容器開發(fā)

2019-12-26 12:47:10

BashLinux命令

2019-11-20 12:30:21

Python編程語言語音識別

2018-04-11 09:30:16

Linux硬盤分區(qū)parted

2019-11-08 15:10:59

BashBash編程Linux

2014-06-20 09:27:27

BAT移動互聯(lián)網(wǎng)

2013-02-26 10:05:16

vmwareAWSOpenStack

2016-12-22 10:44:30

數(shù)據(jù)分析找對象大數(shù)據(jù)

2009-12-02 16:08:51

linux系統(tǒng)

2009-06-01 09:34:22

2011-01-21 13:41:09

Sendmail

2015-08-27 10:02:59

2017-08-17 14:38:39

JavaAbstract抽象

2012-07-17 17:05:55

JavaScript

2021-06-25 10:38:05

JavaScript編譯器前端開發(fā)

2010-04-16 10:38:49

CPU消耗

2009-11-26 17:03:24

Open Suse打印

2020-11-30 06:20:13

javascript

2010-08-26 10:42:29

ADSL ModemDHCP服務器
點贊
收藏

51CTO技術(shù)棧公眾號