1. 程式人生 > >JS中訪問對象的兩種方式區別

JS中訪問對象的兩種方式區別

log 存在 語言 pre 兩種 初始 cti col span

可以使用下面兩種方式訪問對象的屬性和方法

1.對象名.屬性名    對象名.方法名()

2.對象名["屬性名"]   對象名["方法名"]()

 1     var obj = {
 2                name : "小明",
 3                age : 18,
 4                say : function(){
 5                    console.log("我是"+this.name+"我"+this.age+"歲");
 6                }           
 7         };
8 console.log(obj.name); 9 console.log(obj["name"]); 10 obj.say(); 11 obj["say"]();

對於已經存在的屬性和方法,用.和用[]得到的結果一致、

對於不存在(未定義)的屬性和方法,用.會創建這個新的屬性或方法,而用[]的方式訪問不會創建新的屬性或方法

例如在用for-in遍歷對象時

        for(var x in obj){            
            console.log(x);        //輸出obj中的屬性名,方法名
console.log(obj.x);//想要用.的方法輸出對應的屬性和方法 結果是undefined,原因在於JS語言中.方法可以用來聲明,聲明對象屬性的方式就是屬性名.屬性值
                   //這裏實際先聲明了obj的x屬性,並且未初始化該屬性,然後輸出了該屬性值,所以為undefined
     }

利用[]方式只能訪問和讀取,不會定義新的屬性

for(var x in obj){            
            console.log(x);        //輸出obj中的屬性名,方法名
            console.log(obj[x]);//
輸出對應的屬性值和方法,方法未調用所以輸出的是方法的代碼 }

JS中訪問對象的兩種方式區別