JavaScript的对象属性访问器提供了点号和方括号两种方法用于访问一个对象的属性。
点号访问器
Object.property
在点号访问器的语法中, property必须是一个有效的JavaScript标识符。例如,一串字母数字字符,也包括下划线及美元符号,但不能以数字作为开头。比如,object.&0是合法的,而object.0却是无效不合法的。
document.creatElement('pre')
在上述代码块中,document中存在一个名为’creatElement’的方法并且被调用。
如果对数字字面量使用方法,并且数字文字没有指数且没有小数点,请在方法调用之前的点之前留出空格,防止点被解释为小数点。
.toExponential();
//或
77
.toExponential();
//或
(77).toExponential()
//或
77...toExponential();
//或
77.0..toExponential();
//因为77. === 77.0,没有歧义(no ambiquity)
方括号访问器
基本语法
object['property']
property_name
是一个字符串。该字符串不一定是一个合法的标识符;它可以使任意值,例如,‘1foo’,‘&abc*’,甚至是’ '(一个空格)。
例如:
document['creatElement']('pre');
这里的代码的功能跟上一个例子的作用是相同的。
在方括号的前面允许有空格。
document ['creatElement']('pre');
区别
它们之间的差异可以分为两个方面,一个是功能上的差异,一个是性能上的差异。
(1)功能层面
点号访问器只能访问有效的属性名,如果不存在就是undefined
- 当你的属性名包含了特殊符号(例如空格,数字开头等),则必须使用中括号访问器
- 当你的属性名是一个动态变量的时候,则必须使用中括号访问器。
- 简而言之就是点号访问器更快捷,中括号访问器的功能更强大。
(2)性能层面
由于中括号访问器中的内容是JavaScript表达式,需要计算;而点号访问器只能访问已存在属性名,不需要计算;所以从理论角度来说点号访问器的执行速度要优于中括号访问器,但是经过实际测试差别不大。
参考资料:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Property_Accessors