属性访问器

属性访问表达式运算得到一个对象属性或一个数组元素的值。

JavaScript 为属性访问定义了两种语法。

语法

  • 第一种写法是一个表达式后跟随一个句点和标识符。表达式指定对象,标识符则指定需要访问的属性的名称。
expression.identifiler
  • 第二种写法是使用方括号,方括号内是另一个表达式(这种方法适用于对象和数组)。第二个表达式指定要访问的属性的名称或代表要访问数组元素的索引。
expression[expression]

不管使用哪种形式的属性访问器,在句点和左方括号之前的表达式总是会首先计算。

  • 如果计算结果是 nullundefined,表达式会抛出一个类型错误异常,因为这两个值都不能包含任意属性
  • 如果计算结果不是对象,JavaScript 会将其转换为对象
  • 如果对象表达式后跟随句点和标识符,则会查找由这个标识符指定的属性值,并将其作为整个表达式的值返回
  • 如果对象表达式后跟随一对方括号,则会计算方括号内的表达式的值并将其转换为字符串

不论哪种情况,如果命名的属性不存在,那么整个属性访问表达式的值就是 undefined

示例

var a = {x: 1, y: {z: 3}};
// 一个示例对象
var b = [a, 4, [5, 6]];
// 一个包含这个对象的示例数组
console.log(a.x);
// 1
console.log(a.y.z);
// 3
console.log(a["x"]);
// 1
console.log(b[1]);
// 4
console.log(b[2]["1"]);
// 6
console.log(b[0].x);
// 1