淺析對象訪問屬性的"."和"[]"方法區別


在JavaScript中通常使用”."運算符來存取對象的屬性的值。或者使用[]作為一個關聯數組來存取對象的屬性。但是這兩種方式有什么區別了?

例如,讀取object中的property屬性值:

    object.property

    object['property']

以上兩種方式都可以實現屬性的存取。

1.語法方面的區別

點表示法的對象的屬性名是標識符,而后者的屬性名則是一個字符串。

2.靈活性方面的區別

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

而使用數組[]表示法來存取一個對象的屬性時,屬性名是用字符串表示的。字符串是JavaScript的一種數據類型,因此可以在程序運行中操作並創建它們。

3.性能方面區別

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

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

總的來說,這兩種方法區別上不大,都有對應的使用場景。點表示法一般作為靜態對象使用時來存取屬性。而數組表示法在動態存取屬性時就非常有用。通常除非必須使用變量來訪問屬性,否則建議使用點表示法。

-----------------------------

 


免責聲明!

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



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