<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(a.r > b.r)
return a;
else
return b;
}
//由於該函數比較的是兩個對象,所以將他看作是對單個Circel實例方法操作是沒有意義的
//但我們也不希望成為一個獨立的函數,所以將他賦以一個構造函數,使他成為一個類方法
circel.max=circel_max;
//下面的代碼使用了circel的各個字段
var c=new circel(1.0); //創建circel類的一個實例
c.r=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(a.x + b.x ,a.y + b.y);
};
//用一個復數減另一個復數,返回結果
JScript.subtract()=function(a,b)
{
return new JScript(a.x - b.x , a.y - b.y);
};
//計算兩個復數的乘積,並返回結果
JScript.multiply()=function(a,b)
{
return new JScript(a.x * b.x - a.y * b.y , a.x * b.x + x.y * b.y);
};
/**//*下面是一些有用的預定義復數,他們被定義成了類變量,這樣就能夠