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