JSオブジェクト属性の参照

1936 ワード

自動回転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オブジェクトの集合という性質をも表している.このような使い方は、具体的にどの属性(方法)を参照するべきか不明な場合に適しています.例えば、オブジェクトがユーザ資料を表すために用いられます.この場合、文字列はどの属性を使用するべきかを表しています.

<!--
//     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]);
}
}
//-->



このコードでは、ドロップダウンリストボックスを使用して、ユーザにどの情報を表示するかを選択させ、各オプションの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オブジェクトは内部オブジェクトです.カスタムオブジェクトとは異なり、また、索引で属性の一つを参照することもできます.