JS_靜態對象/方法/屬性

Javascript語言的面向對象特徵很弱,其餘面嚮對象語言在建立類時只要使用關鍵字static便可指定類爲靜態類,Javascript沒有提供static這樣的關鍵字,要讓Javascript也具備「靜態」特性只有靠一些「奇技淫巧」了。 

代碼中列舉了兩種靜態方法/屬性的實現方式,一種是靜態類的靜態方法和屬性,另外一種是非靜態類的靜態方法和屬性,代碼說明都寫在每行的代碼註釋裏,這裏就不重複了。 


Java代碼    收藏代碼
  1. /*****************************************  
  2. 方法一* 類、方法、屬性都爲靜態類型* 不能建立實例*****************************************/  
  3. var Time = {  
  4.     today: ‘2009-3-8′,  
  5.     weather: ‘rain’,  
  6.     show: function(){  
  7.         alert(‘Today is ‘ + this.today);   
  8.     }  
  9. };    
  10. //靜態對象可直接使用,無需建立實例  
  11. alert(‘It is ‘ + Time.weather + ‘ today.’); Time.show();    
  12. //下面的代碼會出錯,由於靜態類不能建立實例  
  13. //var t = new Time();  
  14. //t.show();   
  15. /*****************************************  
  16. 方法二* 普通對象,同時擁有靜態和非靜態屬性、方法* 能夠用實例化 
  17. * 注意:*    
  18. 1.靜態方法/屬性使用類名訪問*    
  19. 2.非靜態方法/屬性使用實例名訪問*****************************************/  
  20. function Person(name) {  
  21.     //非靜態屬性  
  22.     this.name = name;   
  23.     //非靜態方法  
  24.     this.show = function() {  
  25.         alert(‘My name is ‘ + this.name + ‘.’);   
  26.     }  
  27. }  
  28. //添加靜態屬性,人都是一張嘴Person.mouth = 1;   
  29. //添加靜態方法,哇哇大哭  
  30. Person.cry = function() {  
  31. alert(‘Wa wa wa …’); };   
  32. //[color=red]使用prototype關鍵字添加非靜態屬性,每一個人的牙可能不同多[/color]  
  33. Person.prototype.teeth = 32;    
  34. //非靜態方法必須經過類的實例來訪問  
  35. var me = new Person(‘Zhangsan’);   
  36. //使用非靜態方法、屬性  
  37. me.show();   
  38. alert(‘I have ‘ + me.teeth + ‘ teeth.’);   
  39. //使用靜態方法、屬性Person.cry();   
  40. alert(‘I have ‘ + Person.mouth + ‘ mouth.’);  
相關文章
相關標籤/搜索