属性

在之前的章节中,我们已经看到了一些可疑的表达式,例如myString.length(获取字符串的长度)和Math.max(最大值函数)。 这些表达式可以访问某个值的属性。 在第一个中,我们访问myString中的length属性。 第二个中,我们访问Math对象(它是数学相关常量和函数的集合)中的名为max的属性。

在 JavaScript 中,几乎所有的值都有属性。但nullundefined没有。如果你尝试访问nullundefined的属性,会得到一个错误提示。

  1. null.length;
  2. // → TypeError: null has no properties

在JavaScript中访问属性的两种主要方式是点(.)和方括号([])。 value.xvalue [x]都可以访问value属性,但不一定是同一个属性。 区别在于如何解释x。 使用点时,点后面的单词是该属性的字面名称。 使用方括号时,会求解括号内的表达式来获取属性名称。 鉴于value.x获取value的名为x的属性,value [x]尝试求解表达式x,并将结果转换为字符串作为属性名称。

所以如果你知道你感兴趣的属性叫做color,那么你会写value.color。 如果你想提取属性由绑定i中保存的值命名,你可以写value [i]。 属性名称是字符串。 它们可以是任何字符串,但点符号仅适用于看起来像有效绑定名的名称。 所以如果你想访问名为2John Doe的属性,你必须使用方括号:value[2]value["John Doe"]

数组中的元素以数组属性的形式存储,使用数字作为属性名称。 因为你不能用点号来表示数字,并且通常想要使用一个保存索引的绑定,所以你必须使用括号来表达它们。

数组的length属性告诉我们它有多少个元素。 这个属性名是一个有效的绑定名,我们事先知道它的名字,所以为了得到一个数组的长度,通常写array.length,因为它比array["length"]更容易编写。