js訪問物件屬性的2個方法

weixin_34007291發表於2018-08-29

筆者在學習的過程中,瞭解到訪問物件的屬性,其實有兩種方式:
比如:一個物件 Obj = {"name": "whoami", "AGE": "20"}
1.用點訪問,Obj.Name ;
2.用中括號訪問,Obj["Name"];
上述兩種方式得到的結果都是屬性Name的值whoami;
兩者的區別:
1.語法方面的區別

點表示法的物件的屬性名是識別符號,而後者的屬性名則是一個字串。

2.靈活性方面的區別

在JavaScript編寫程式中,可以為物件建立任意數目的屬性。但使用”.“運算子來存取一個物件的屬性時,屬性名是用識別符號表示的。而在JavaScript程式中,識別符號必須被逐字地輸入,它們不是一種資料型別,因此程式不能對其操作。也就是說,識別符號是靜態的,在程式中必須對其進行硬編碼。

而使用陣列[]表示法來存取一個物件的屬性時,屬性名是用字串表示的。字串是JavaScript的一種資料型別,因此可以在程式執行中操作並建立它們。

3.效能方面區別

陣列[]表示法在存取屬性值時會進行表示式執行。而點表示法是直接存取屬性值,理論上執行效率會比陣列表示法高。效能方面其實可以忽略。

某些場景必須用到陣列表示法來動態存取屬性值,這個是點表示法無法做到的。

總的來說,這兩種方法區別上不大,都有對應的使用場景。點表示法一般作為靜態物件使用時來存取屬性。而陣列表示法在動態存取屬性時就非常有用。

  1. 在引用已有的物件屬性時,並有屬性名的情況下,用點和中括號是一樣的;若屬性是陣列或者是物件,沒有屬性名,則要用類似陣列元素引用的方式,用中括號+下標。例子參考;
  2. 在建立函式屬性的時候,若屬性名是已知的。用點和中括的的方式一樣。若屬性名是一組變數,則只能用中括號表示。中括號的靈活應用可以讓程式碼變的很強大。

參考:https://www.cnblogs.com/polk6/p/4562281.html

相關文章