JS中訪問對象的兩種方式區別
阿新 • • 發佈:2018-09-15
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中訪問對象的兩種方式區別