国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

Javascript創建類和對象詳解

2024-05-06 15:16:34
字體:
來源:轉載
供稿:網友

現總結一下Javascript創建類和對象的幾種方法:

1、原始的創建方法:

<script type="text/javascript">  var person = new Object();  person.name="Amy";  person.sex="Woman";  person.show=function(){    document.write("name is: "+this.name+" ; sex is:"+this.sex);  }  person.show(); </script>

原始的創建方法對于熟悉面向對象的人來說難以接受,總感覺屬性和方法的封裝不是很緊密,這種封裝是以“對象名”+“.”的方式進行,表示對象名后跟的屬性和方法是這個對象擁有的東西,這個對象(例如:person)就是封裝好的結果,你可以繼續追加方法和屬性,例如追加age屬性:person.age=23;這種創建方法會讓熟悉Java編程的人感到很難受。我們可以對原始的創建方法進一步“封裝”一下,請看下一步:

2、工廠方法模式:

 <script type="text/javascript">   function personFactory(name,age,sex){     var ob=new Object();     ob.name=name;     ob.age=age;     ob.sex=sex;     ob.show=function(){       document.write(ob.name+" "+ob.age+" "+ob.sex);     }     return ob;   }   var person=personFactory("Amy",21,"Woman");   person.show(); </script>

工廠方法模式看起來更像一個類了,personFactory對原始的創建方法進行了封裝,并將創建好的對象返回給person引用變量,person就可以引用這個創建好的對象了,但是還不夠完美:你每一次創建一個對象, 并使用該對象調用show()方法時,都會創建新的show()函數,它們完全可以調用同一個show方法,優化方法是將show放到工廠外,如下:

 <script type="text/javascript">   function show(){     document.write(this.name+" "+this.age+" "+this.sex);   }   function personFactory(name,age,sex){     var ob=new Object();     ob.name=name;     ob.age=age;     ob.sex=sex;     ob.show=show;     return ob;   }   var person=personFactory("Amy",22,"Woman");   person.show(); </script>

從功能上說,上面的代碼解決了函數重用問題,但是呈現方式不像是創建一個對象,熟悉Java的人仍感到難受。請看下一步:

3、構造方法模式:

 <script type="text/javascript">   function person(name,age,sex){     this.name=name;     this.age=age;     this.sex=sex;     this.show=function(){       document.write(this.name+" "+this.age+" "+this.sex);       document.write("<br>");     }   }   var per=new person("Amy",22,"Woman");   per.show(); </script>

上述代碼的創建方式已經與Java類和對象的創建方式幾乎一樣了,封裝好類的屬性和方法,然后利用new關鍵字創建并返回一個對象,這不就是Java創建類和對象的過程嗎,是的,就是這個過程,但是還可以優化,這種方式創建的對象調用show方法是也會即時地創建一個show函數,我們能不能創建一個所有對象公用的一個方法呢?就像Java類中的static方法一樣,所有對象都使用同一個static方法,答案是可以的。請看下一步:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 浪卡子县| 开封市| 蕉岭县| 镇远县| 林周县| 建德市| 西华县| 寻甸| 图们市| 彭州市| 张掖市| 安陆市| 榆中县| 邻水| 西宁市| 阜城县| 新津县| 库车县| 禹州市| 吉林市| 长治县| 孟连| 敖汉旗| 南昌市| 象山县| 恭城| 永春县| 台中县| 乡城县| 历史| 临沭县| 资源县| 股票| 三台县| 马龙县| 嘉峪关市| 龙里县| 东辽县| 贵州省| 耿马| 常山县|