JAVAScript對(duì)象與純粹的面向?qū)ο笳Z言的對(duì)象存在一定的區(qū)別:JavaScript中的對(duì)象本質(zhì)上是一個(gè)關(guān)聯(lián)數(shù)組,或者說更像java里的Map數(shù)據(jù)結(jié)構(gòu),由一組key-value對(duì)組成。與java中Map對(duì)象存在區(qū)別的是,javaScript對(duì)象的value,不僅可以是值(包括基本類型的值和復(fù)合類型的值),也可以是函數(shù),此時(shí)的函數(shù)就是該對(duì)象的方法。當(dāng)value是基本類型的值或者復(fù)合類型的值時(shí),此時(shí)的value就是該對(duì)象的屬性值。
因此當(dāng)需要訪問某個(gè)javaScript對(duì)象的屬性時(shí),不僅可以使用obj。propName的形式,也可以采用obj[propName]的形式,有些時(shí)候甚至必須使用這種形式。
<script type="text/javascript">
function Person(name,age)
{
//將name、age形參的值分別賦給name、age實(shí)例屬性
this.name=name;
this.age=age;
this.info=function()
{
alert('info method!');
}
}
var p=new Person('yeeku',30);
for(propName in p)
{
//遍歷Person對(duì)象屬性
document.writeln('p對(duì)象的'+propName+"屬性值為:"+p[propName]+"<br />");
}
</script>
上面程序中粗體字代碼遍歷了Person對(duì)象的每個(gè)屬性,因?yàn)楸闅v每個(gè)屬性時(shí),循環(huán)計(jì)數(shù)器是Person對(duì)象的屬性名,因此程序必須根據(jù)屬性名來訪問Person對(duì)象的屬性,此時(shí)不能采用p.propName的形式,如果采用p.propName的形式,javaScript不會(huì)把propName當(dāng)成變量處理,它試圖直接訪問該對(duì)象的propName屬性,但該屬性實(shí)際并不存在。在瀏覽器中瀏覽該頁面,如下所示






