Javascript語言的面向?qū)ο筇卣骱苋酰渌嫦驅(qū)ο笳Z言在創(chuàng)建類時只要使用關(guān)鍵字static即可指定類為靜態(tài)類,Javascript沒有提供static這樣的關(guān)鍵字,要讓Javascript也具有“靜態(tài)”特性只有靠一些“奇技淫巧”了。
代碼中列舉了兩種靜態(tài)方法/屬性的實現(xiàn)方式,一種是靜態(tài)類的靜態(tài)方法和屬性,另一種是非靜態(tài)類的靜態(tài)方法和屬性,代碼說明都寫在每行的代碼注釋里,這里就不重復了。
PLAIN TEXT JAVASCRIPT:
- /****************************************
- * 方法一
- * 類、方法、屬性都為靜態(tài)類型
- * 不能創(chuàng)建實例
- *****************************************/
- var Time = {
- today: ‘2009-3-8′,
- weather: ‘rain’,
- show: function() {
- alert(‘Today is ‘ + this.today);
- }
- };
-
- //靜態(tài)對象可直接使用,無需創(chuàng)建實例
- alert(‘It is ‘ + Time.weather + ‘ today.’);
- Time.show();
-
- //下面的代碼會出錯,因為靜態(tài)類不能創(chuàng)建實例
- //var t = new Time();
- //t.show();
-
- /****************************************
- * 方法二
- * 普通對象,同時擁有靜態(tài)和非靜態(tài)屬性、方法
- * 可以用實例化
- * 注意:
- * 1.靜態(tài)方法/屬性使用類名訪問
- * 2.非靜態(tài)方法/屬性使用實例名訪問
- *****************************************/
- function Person(name) {
- //非靜態(tài)屬性
- this.name = name;
- //非靜態(tài)方法
- this.show = function() {
- alert(‘My name is ‘ + this.name + ‘.’);
- }
- }
- //添加靜態(tài)屬性,人都是一張嘴
- Person.mouth = 1;
- //添加靜態(tài)方法,哇哇大哭
- Person.cry = function() {
- alert(‘Wa wa wa …’);
- };
- //使用prototype關(guān)鍵字添加非靜態(tài)屬性,每個人的牙可能不一樣多
- Person.prototype.teeth = 32;
-
- //非靜態(tài)方法必須通過類的實例來訪問
- var me = new Person(‘Zhangsan’);
- //使用非靜態(tài)方法、屬性
- me.show();
- alert(‘I have ‘ + me.teeth + ‘ teeth.’);
- //使用靜態(tài)方法、屬性
- Person.cry();
- alert(‘I have ‘ + Person.mouth + ‘ mouth.’);
Tag標簽: javascript,靜態(tài)方法,靜態(tài)屬性