ClassScript:像Java一樣的寫法來宣告JavaScript的Class
目前主流的JavaScript library 相當多,像是 jQuery、Mootools...等等,都是相當熱門的。但是其中還是各自有其優缺點,像是jQuery感覺就是以Element為重心,全部的動作幾乎都是過$()函式的呼叫來取得欲操作的element,但是對於他的擴充性,可能必須先其有相當的瞭解,才能開發自己的Plugin,而mootools其實比較符合用物件導向的方式開發,可以使用class的方法來讓你建立一個像是Java的class宣告式,雖然程式碼可能會因此多了一點,但是在往後的擴充與管理有著相當的優勢,唯一稍嫌不足的是它的方法命名都取的蠻奇怪的,雖然字義上是沒錯,但卻不是平常看到的,所以當初在學習時,會讓感覺需刻意去瞭解你本來就知道的東西,經常會看完一個方法的介紹後,心中浮現出"原來是這個阿!"。而且它的Class宣告是使用new Class()來建立,對於學過Java的人感覺的確會讓人覺得怪怪的。
有借於此,我自己寫了一個模擬Java寫法的Class宣告方式,對於想能在JavaScript的環境中,像Java一樣的輕鬆宣告Class,或許可以讓你在JavaScript開發物件導向程式更容易上手,目實作了Package,Class,Extends,Implements四個主要方法:
首先先取得ClassScript的Core.Js檔:
你可以選擇下載或直接使用放在google上的路徑
<script type='text/javascript' src='http://classscript.googlecode.com/files/http://classscript.googlecode.com/files/ClassScript-1.0.2beta.js'></script>
我最喜歡用魔獸爭霸的英雄來說明類別的宣告了XD,來建立英雄類別吧!(JavaScript有支援utf-8的編碼,所以用中文變數也ok啦~這是為了讓讀者更容易理解,一般還是不建議使用中文變數,因為什麼時候會出錯都不一定)
Class的宣告方式:
Class("英雄")(function(){ // 使用var來宣告變數,使用var宣告的的變數具有private(私有)的屬性,而使用this來表示pulbic(公開)屬性 var 名稱; var 生命值; var 法力值; var 力量; var 敏捷; var 智慧; var 傷害; var 攻擊速度; var 裝甲; var 移動速度; // 建構子名稱必須為 constructor,並且必須為公開方法 this.constructor = function(設定){ // 使用 || 可以指定變數為左邊或右邊的值,簡單來說當左邊的值沒有定義或為null,值使用右邊的數值 名稱 = 設定.名稱 || '???'; 生命值 = 設定.生命值 || 100; 法力值 = 設定.法力值 || 100; 力量 = 設定.力量 || 10; 敏捷 = 設定.敏捷 || 10; 智慧 = 設定.智慧 || 10; 傷害 = 設定.傷害 || 10; 攻擊速度 = 設定.攻擊速度 || 10; 裝甲 = 設定.裝甲 || 10; 移動速度 = 設定.移動速度 || 10; } this.移動 = function(){ } this.停止 = function(){ } this.固守 = function(){ } this.攻擊 = function(){ } this.巡邏 = function(){ } this.學習技能 = function(){ } this.打招呼 = function(){ alert('Hi, 我叫' + 名稱); } })
宣告完畢後,接下來就是把它new出來
var 我的英雄 = new 英雄({ '名稱': '上山採藥', '生命值': 1000, '法力值': 500, '力量': 25, '敏捷': 20, '智慧': 17, '傷害': 50, '攻擊速度': 120, '裝甲': 12, '移動速度': 300 }) 我的英雄.打招呼(); //→ 顯示 'Hello, 我是上山採藥'
這個範例雖然很弱=..=,但是大概可以看出個樣子吧,為了不拉長篇幅,下一篇再來介紹詳細的使用方法...

回應(Leave a Reply)