获取js对象的成员,obj.attr和obj["attr"]这两种方式的效率一样吗?

夢醒時分-月兒moon


结论:根据不同的浏览器,这两种方式执行效率也不一样。

但是这两种使用方法还是有区别的。

[]可以用变量作为属性名访问,而点不行

[]可以用数字作为属性访问,但点不行

[]可以动态访问属性名,可以在程序运行时创建和修改

[]里面的表示可以有导致语法错误的字符,也可以是关键字


李老师tome


读取和设置对象属性有两种写法:

1、(.)点操作符:静态的。右侧必须是一个以属性名称命名的简单标识符。属性名用一个标识符来表示。标识符必须直接出现再js程序中,它们不是数据类型,因此程序无法修改它们。

2、([ ])中括号操作符:动态的。方括号里必须是一个计算结果为字符串的表达式,属性名通过字符串表示。字符串是js的数据类型,在程序运行时可以修改和创建它们。

主要有以下区别:

1、([ ])可以用变量作为属性名或访问,而点方法不可以

2、[ ]中括号法--可以用数字作为属性名,而点语法不可以;

3, [] 可以动态访问的属性名,可以在程序运行时创建和修改属性,点操作符就不行!

( 即 []--可以动态设置和获取)

4,如果属性名中包含会导致语法错误的字符,或者属性名是关键字或者保留字,也可以使用方括号表示法。

//如:(属性名有空格,请使用方括号 [] )

简单利用:在数组原型链上增加一个去重得的方法,并能实现链式写法。

希望这点回答能够帮助你


充电室


性能差别不大。

最主要的区别是中括号可用于动态反射,里面可以用表达式,更灵活。

点号在ide中会有语法检查。


椰子猫她爸


如果这样的代码运行在服务器上,且每天有几千万的请求访问到,非常建议使用点号,而且在debug的时候,点号的方式可以鼠标悬浮查看结果,中括号的不可以。如果对象的属性不是用变量去获取,建议使用点号获取对象属性


大学的那些事情


性能一致,第二种方式多了三个字符,会增加代码体积,如果所有属性访问都用第二种,体积会增加不少


一口咖啡一段代码


没区别,只是后一种可以传变量,数组的索引也可以


何以前端


这要看浏览器怎么解析。


思有邪斋


差不多


分享到:


相關文章: