存储在对象容器内部的是这些属性的名称,它们就像指针(从技术角度来说是引用)一样,指向这些值真正的存储位置。
var myObject = { a: 2 } myObject.a; // 2 myObject['a']; // 2
. 语法通常被称为‘属性访问’,[] 语法通常被称为‘键访问’。这两种语法的主要区别在于,. 操作符要求属性名满足标识符的命名规范,而 [] 语法可以接受任意 utf-8/Unicode 字符串作为属性名,比如说 ‘super-fun!’,就必须用 [] 访问,因为它不是一个有效的标识符属性名
var myObject = {}; myObject[true] = 'foo'; myObject[3] = 'bar'; myObject[myObject] = 'baz'; myObject['true']; // 'foo' myObject['3']; // 'bar' myObject['[object object]']; // 'baz'
在对象中,属性名永远都是字符串。如果你使用 string 以外的其他值作为属性名,那它首先会被转换为一个字符串