<script language="javascript">
function circel(radius)
{//這個函數定義了類別自身,下面r是建構函式定義並初始化的一個實例變數
this.r=radius;
}
//該屬性是類別變量,他屬於建構函數的屬性
circel.PI=3.14159;
function area()
{//這個當然是計算圓面積的公式了
return this.PI * this.r * this.r;
}
//下面我們透過把函數賦給建構函式的圓型物件使他成為一個實例方法,
//為了與Navigator3 相容,我們必須在原型物件生成之前創建並拋棄一個物件
new circel(0);
circel.prototype.area=area;
//以下是另一個函數,他將兩個參數對比,並傳回較大的一個
function circel_max(a,b)
{
if(ar > br)
return a;
else
return b;
}
//由於函數比較的是兩個對象,所以將他看作是對單一Circel實例方法操作是沒有意義的
//但我們也不希望成為一個獨立的函數,所以將他賦以一個建構函數,使他成為一個類別方法
circel.max=circel_max;
//下面的程式碼使用了circel的各個字段
var c=new circel(1.0); //建立circel類別的實例
cr=2.2; //設定實例的一個變數r
var a=c.area(); //呼叫實例的area方法
var x=Math.exp(circel.PI); //在我們自己的計算中使用變數PI
var d=new circel(1.2); //建立另一個circel實例
var bigger=circel.max(c,d);//使用類別方法circel.max
</script>
JScript.js文件
/**//* JScript 檔案複數就是一個虛數和一個虛數的和,虛數i是-1的平方根
*/
/**//*定義類別的第一步是定義該類別的建構函數,資格建構函數要初始化物件的所有實例函數這些屬性是核心的「狀態變數」是他們使類別的每個實例互不相同
*/
function JScript(real,img)
{
this.x=real;//實數部分
this.y=img;//虛數部分
}
/**//*定義函類別的第二步是在建構函式的原型物件中定義他的實例方法(或其他的屬性)
該物件定義的任何屬性都將被這個類別的所有實例繼承注意實例方法對this關鍵字的隱式操作,許多方法都不需要其他的參數
*/
//傳回複數的大小,他的定義是從原點(0,0)到複平面的距離
JScript.prototype.magnitude=function()
{
return Math.sqrt(this.x * this.x + this.y * this.y);
};
//傳回複數的相反數
JScript.prototype.negative=function()
{
return new JScript(-this.x ,-this.y);
};
//以一種有效的方式把JScript物件裝換成字串,這將是把JScript物件當作字串時候呼叫的函數
JScript.prototype.toString=function()
{
return "{"+ this.x +","+ this.y +"}";
};
//傳回一個複數的實數部分,該函數是在將JScript物件作為原始值處理時調用
JScript.prototype.valueOf=function() {return this.x;};
/**//*定義類別的第三步是定義類別方法。
常數和其他類別變數作為函數建構自身的屬性(而不是建構函數的原型物件的屬性)
注意靜態方法,沒有使用this關鍵字,因為他們只對參數進行操作
*/
//計算兩個複數的和並回傳結果
JScript.add()=function(a,b)
{
return new JScript(ax + bx ,ay + by);
};
//用一個複數減另一個複數,回傳結果
JScript.subtract()=function(a,b)
{
return new JScript(ax - bx , ay - by);
};
//計算兩個複數的乘積,並傳回結果
JScript.multiply()=function(a,b)
{
return new JScript(ax * bx - ay * by , ax * bx + xy * by);
};
/**//*下面是一些有用的預定義複數,他們被定義成了類別變量,這樣就能夠被用著常數(注意,他們實際上並不是只讀的)
*/
JScript.zero=new JScript(0,0);
JScript.one=new JScript(1.0);
JScript.i=new JScript(0.1);