JS_靜態對象/方法/屬性
Javascript語言的面向對象特徵很弱,其餘面嚮對象語言在建立類時只要使用關鍵字static便可指定類爲靜態類,Javascript沒有提供static這樣的關鍵字,要讓Javascript也具備「靜態」特性只有靠一些「奇技淫巧」了。
代碼中列舉了兩種靜態方法/屬性的實現方式,一種是靜態類的靜態方法和屬性,另外一種是非靜態類的靜態方法和屬性,代碼說明都寫在每行的代碼註釋裏,這裏就不重複了。
- /*****************************************
- 方法一* 類、方法、屬性都爲靜態類型* 不能建立實例*****************************************/
- var Time = {
- today: ‘2009-3-8′,
- weather: ‘rain’,
- show: function(){
- alert(‘Today is ‘ + this.today);
- }
- };
- //靜態對象可直接使用,無需建立實例
- alert(‘It is ‘ + Time.weather + ‘ today.’); Time.show();
- //下面的代碼會出錯,由於靜態類不能建立實例
- //var t = new Time();
- //t.show();
- /*****************************************
- 方法二* 普通對象,同時擁有靜態和非靜態屬性、方法* 能夠用實例化
- * 注意:*
- 1.靜態方法/屬性使用類名訪問*
- 2.非靜態方法/屬性使用實例名訪問*****************************************/
- function Person(name) {
- //非靜態屬性
- this.name = name;
- //非靜態方法
- this.show = function() {
- alert(‘My name is ‘ + this.name + ‘.’);
- }
- }
- //添加靜態屬性,人都是一張嘴Person.mouth = 1;
- //添加靜態方法,哇哇大哭
- Person.cry = function() {
- alert(‘Wa wa wa …’); };
- //[color=red]使用prototype關鍵字添加非靜態屬性,每一個人的牙可能不同多[/color]
- Person.prototype.teeth = 32;
- //非靜態方法必須經過類的實例來訪問
- var me = new Person(‘Zhangsan’);
- //使用非靜態方法、屬性
- me.show();
- alert(‘I have ‘ + me.teeth + ‘ teeth.’);
- //使用靜態方法、屬性Person.cry();
- alert(‘I have ‘ + Person.mouth + ‘ mouth.’);
歡迎關注本站公眾號,獲取更多信息