JSオブジェクト属性の参照
1936 ワード
自動回転http://www.cnblogs.com/liping13599168/archive/2007/08/02/839681.html
JavaScriptでは、各オブジェクトは複数の属性(方法)の集合と見なされ、属性(方法)を引用するのは簡単である.すなわち、オブジェクト名・属性名はこれ以外に、四角い括弧の形で参照することもできる.対象名[属性(方法)名]は、ここでの方法名と属性名は文字列である.元のドット番号の後の識別子ではなく、例えば、
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オブジェクトは内部オブジェクトです.カスタムオブジェクトとは異なり、また、索引で属性の一つを参照することもできます.