浅析对象访问属性的.和[]方法区别
原文鏈接:http://www.cnblogs.com/bigboyLin/p/4967820.html
簡明版:請問js對象屬性值為什么用數(shù)組也可以訪問
?
在JavaScript中通常使用”."運(yùn)算符來存取對象的屬性的值。或者使用[]作為一個(gè)關(guān)聯(lián)數(shù)組來存取對象的屬性。但是這兩種方式有什么區(qū)別了?
例如,讀取object中的property屬性值:
?object.property
object['property']
以上兩種方式都可以實(shí)現(xiàn)屬性的存取。
1.語法方面的區(qū)別
點(diǎn)表示法的對象的屬性名是標(biāo)識符,而后者的屬性名則是一個(gè)字符串。
2.靈活性方面的區(qū)別
在JavaScript編寫程序中,可以為對象創(chuàng)建任意數(shù)目的屬性。但使用”.“運(yùn)算符來存取一個(gè)對象的屬性時(shí),屬性名是用標(biāo)識符表示的。而在JavaScript程序中,標(biāo)識符必須被逐字地輸入,它們不是一種數(shù)據(jù)類型,因此程序不能對其操作。也就是說,標(biāo)識符是靜態(tài)的,在程序中必須對其進(jìn)行硬編碼。
而使用數(shù)組[]表示法來存取一個(gè)對象的屬性時(shí),屬性名是用字符串表示的。字符串是JavaScript的一種數(shù)據(jù)類型,因此可以在程序運(yùn)行中操作并創(chuàng)建它們。
3.性能方面區(qū)別
數(shù)組[]表示法在存取屬性值時(shí)會進(jìn)行表達(dá)式運(yùn)行。而點(diǎn)表示法是直接存取屬性值,理論上執(zhí)行效率會比數(shù)組表示法高。性能方面其實(shí)可以忽略。
某些場景必須用到數(shù)組表示法來動態(tài)存取屬性值,這個(gè)是點(diǎn)表示法無法做到的。
總的來說,這兩種方法區(qū)別上不大,都有對應(yīng)的使用場景。點(diǎn)表示法一般作為靜態(tài)對象使用時(shí)來存取屬性。而數(shù)組表示法在動態(tài)存取屬性時(shí)就非常有用。通常除非必須使用變量來訪問屬性,否則建議使用點(diǎn)表示法。
轉(zhuǎn)載于:https://www.cnblogs.com/gavinyyb/p/6490270.html
總結(jié)
以上是生活随笔為你收集整理的浅析对象访问属性的.和[]方法区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。