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


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

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]);//輸出對應的屬性值和方法,方法未調用所以輸出的是方法的代碼
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM