獲取js對象的成員,obj.attr和obj["attr"]這兩種方式的效率一樣嗎?

夢醒時分-月兒moon


結論:根據不同的瀏覽器,這兩種方式執行效率也不一樣。

但是這兩種使用方法還是有區別的。

[]可以用變量作為屬性名訪問,而點不行

[]可以用數字作為屬性訪問,但點不行

[]可以動態訪問屬性名,可以在程序運行時創建和修改

[]裡面的表示可以有導致語法錯誤的字符,也可以是關鍵字


李老師tome


讀取和設置對象屬性有兩種寫法:

1、(.)點操作符:靜態的。右側必須是一個以屬性名稱命名的簡單標識符。屬性名用一個標識符來表示。標識符必須直接出現再js程序中,它們不是數據類型,因此程序無法修改它們。

2、([ ])中括號操作符:動態的。方括號裡必須是一個計算結果為字符串的表達式,屬性名通過字符串表示。字符串是js的數據類型,在程序運行時可以修改和創建它們。

主要有以下區別:

1、([ ])可以用變量作為屬性名或訪問,而點方法不可以

2、[ ]中括號法--可以用數字作為屬性名,而點語法不可以;

3, [] 可以動態訪問的屬性名,可以在程序運行時創建和修改屬性,點操作符就不行!

( 即 []--可以動態設置和獲取)

4,如果屬性名中包含會導致語法錯誤的字符,或者屬性名是關鍵字或者保留字,也可以使用方括號表示法。

//如:(屬性名有空格,請使用方括號 [] )

簡單利用:在數組原型鏈上增加一個去重得的方法,並能實現鏈式寫法。

希望這點回答能夠幫助你


充電室


性能差別不大。

最主要的區別是中括號可用於動態反射,裡面可以用表達式,更靈活。

點號在ide中會有語法檢查。


椰子貓她爸


如果這樣的代碼運行在服務器上,且每天有幾千萬的請求訪問到,非常建議使用點號,而且在debug的時候,點號的方式可以鼠標懸浮查看結果,中括號的不可以。如果對象的屬性不是用變量去獲取,建議使用點號獲取對象屬性


大學的那些事情


性能一致,第二種方式多了三個字符,會增加代碼體積,如果所有屬性訪問都用第二種,體積會增加不少


一口咖啡一段代碼


沒區別,只是後一種可以傳變量,數組的索引也可以


何以前端


這要看瀏覽器怎麼解析。


思有邪齋


差不多


分享到:


相關文章: