轉(zhuǎn)自http://www.cnblogs.com/liping13599168/archive/2007/08/02/839681.html
在JavaScript中,每個(gè)對象可以看作是多個(gè)屬性(方法)的集合,引用一個(gè)屬性(方法)
很簡單,即:
對象名.屬性(方法)名
除此之外,還可以用方括號的形式來引用:
對象名["屬性(方法)名"]
注意,這里的方法名和屬性名是一個(gè)字符串,而非原先點(diǎn)號后面的標(biāo)識符,例如:
var arr=new Array();
//為數(shù)組添加一個(gè)元素
arr["push"]("Leepy");
//獲得數(shù)組的長度
var len=arr["length"];
//輸出數(shù)組的長度
alert(len);
上面的代碼等價(jià)于:
var arr=new Array();
//為數(shù)組添加一個(gè)元素
arr.push( "Leepy");
//獲得數(shù)組的長度
var len=arr.length;
//輸出數(shù)組的長度
alert(len);
這種引用屬性(方法)的方式和數(shù)組類似,也體現(xiàn)出一個(gè)JavaScript對象就是一組屬性(方法)的集合這個(gè)性質(zhì)。
這種用法適合不確定具體要引用哪個(gè)屬性(方法)的場合,例如:一個(gè)對象用于表示用戶資料,這時(shí)一個(gè)字符串表示要使用哪個(gè)屬性,那就可以用這種方式來引用:
<script language="JavaScript" type="text/javascript">
<!--
//定義了一個(gè)User 類,包括兩個(gè)成員age和sex,并指定了初始值。
function User(){
this.age=23;
this.sex="男";
}
//創(chuàng)建user 對象
var user=new User();
//根據(jù)下拉列表框顯示用戶的信息
function show(slt){
if(slt.selectedIndex!=0){
alert(user[slt.value]);
}
}
//-->
</script>
<!--下拉列表框用于選擇用戶信息-->
<select onchange="show(this)">
<option>請選擇需要查看的信息:</option>
<option value="age">年齡</option>
<option value="sex">性別</option>
</select>
在這段代碼中,使用一個(gè)下拉列表框讓用戶選擇查看哪個(gè)信息,每個(gè)選項(xiàng)的value就表
示用戶對象的屬性名稱。這時(shí)如果不采用方括號的形式,就必須使用如下代碼來達(dá)到預(yù)期效果:
function show(slt){
if(slt.selectedIndex!=0){
if(slt.value=="age")alert(user.age);
if(slt.value=="sex")alert(user.sex);
}
}
而使用方括號語法,則只需寫為:
alert(user[slt.value]);
由此可見,方括號語法更像一種參數(shù)語法,可用一個(gè)變量來表示引用對象的哪個(gè)屬性。
如果不采用這種方法,又不想用條件判斷,可以使用eval函數(shù):
alert(eval("user."+slt.value));
這里利用eval函數(shù)的性質(zhì),執(zhí)行了一段動態(tài)生成的代碼,并返回了結(jié)果。
實(shí)際上,在document 的集合對象時(shí),就有類似方括號的用法,比如引用頁面
中一個(gè)名為“theForm”的表單對象,曾經(jīng)的用法是:
document.forms["theForm"];
其實(shí)也可以寫為:
document.forms.theForm;
但這里的forms 對象是一個(gè)內(nèi)部對象,和自定義對象不同的是,它還可以用索引來引用
其中的一個(gè)屬性。