?
This document uses PHP Chinese website manual Release
JScript? | 語言參考 |
Jscript 對象是屬性和方法的集合。一個(gè)方法就是一個(gè)函數(shù),是對象的成員。屬性是一個(gè)值或一組值(以數(shù)組或?qū)ο蟮男问剑菍ο蟮某蓡T。Jscript 支持四種類型的對象:內(nèi)部對象、生成的對象、宿主給出的對象(如 Internet 瀏覽器中的 window 和 document)以及 ActiveX 對象(外部組件)。
在 Jscript 中,對象和數(shù)組幾乎是以相同的方式處理的。對象和數(shù)組均可以被賦予任意值,實(shí)際上數(shù)組只是一種特殊的對象。數(shù)組和對象的區(qū)別在于數(shù)組有一個(gè)“奇妙的” length 屬性,而對象沒有。這意味著可以給數(shù)組的一個(gè)元素賦予比其他元素更大的值。例如,myArray[100] = "hello" — 然后 length 屬性將自動地被更新為 101(新長度)。同樣,如果修改數(shù)組的 length 屬性,將刪除不再是數(shù)組部分的元素。
Jscript 中所有的對象均支持“expando”屬性或那些可以在運(yùn)行時(shí)動態(tài)添加和刪除的屬性。這些屬性可以有包含數(shù)字的任意名稱。如果屬性的名稱是簡單的標(biāo)識符<<參考標(biāo)識符規(guī)則>>,可以在對象名稱的后面加句點(diǎn),例如:
var myObj = new Object(); //
添加兩個(gè)expando
屬性,'name'
和'age'
myObj.name = "Fred";
myObj.age = 42;
如果屬性名稱不是一個(gè)簡單的標(biāo)識符,或者在寫腳本的時(shí)候不知道,可以在方括號中使用任意表達(dá)式來索引屬性。在 Jscript 中所有 expando 屬性的名稱在被添加到對象之前被轉(zhuǎn)換為字符串。
var myObj = new Object(); //
添加兩個(gè)無法寫在object.property
語//
法中的expando
屬性。//
第一個(gè)屬性包含無效字符(空格),//
所以必須寫在方括號里。myObj["not a valid identifier"] = "This is the property value";
//
第二個(gè)expando
名稱是一個(gè)數(shù)字,//
所以也必須寫在方括號里。myObj[100] = "100";
傳統(tǒng)的作法是賦給數(shù)組元素以 0 開始的數(shù)字索引。這些數(shù)組元素與 length 屬性相交互。然而,由于所有的數(shù)組也是對象,也支持 expando 屬性。請注意,雖然如此,expando 屬性并不以任何方式與 length 屬性相交互。例如:
//
三個(gè)元素的數(shù)組var myArray = new Array(3);
//
添加數(shù)據(jù)myArray[0] = "Hello";
myArray[1] = 42;
myArray[2] = new Date(2000, 1, 1);
//
顯示數(shù)組的長度3
window.alert(myArray.length);
//
添加某些expando
屬性myArray.expando = "JScript!";
myArray["another Expando"] = "Windows";
//
仍然顯示3
,因?yàn)閮蓚€(gè)expando
屬性//
并不影響長度。window.alert(myArray.length);
雖然 Jscript 并不直接支持多維數(shù)組,但是可以在數(shù)組元素中存儲任意種類的數(shù)據(jù) — 包含其他數(shù)組。所以通過在另一個(gè)數(shù)組的元素里存儲其他數(shù)組可以得到多維數(shù)組的特性。例如,下面的代碼為最大為 5 的數(shù)字建立了乘法表:
//
若是更大的表請改變本數(shù)var iMaxNum = 5;
//
循環(huán)計(jì)數(shù)var i, j;
//
新數(shù)組。由于數(shù)組從0
開始計(jì)數(shù),//
而不是1
,所以數(shù)組大小為iMaxNum + 1
。var MultiplicationTable = new Array(iMaxNum + 1);
//
為每個(gè)主要的數(shù)做循環(huán)(表中的每一行)for (i = 1; i <= iMaxNum; i++)
{
//
生成表中的列MultiplicationTable[i] = new Array(iMaxNum + 1);
//
將乘法的結(jié)果存在行中for (j = 1; j <= iMaxNum; j++)
{
MultiplicationTable[i][j] = i * j;
}
}
window.alert(MultiplicationTable[3][4]); //
顯示12
window.alert(MultiplicationTable[5][2]); //
顯示10
window.alert(MultiplicationTable[1][4]); //
顯示4