JavaScript只有一种数据类型可以包含多个值:对象Object。数组是对象的一种特殊形式。
对象的形式如下:{key: value, key: value, ...}
数组的形式如下:[value, value, ...]
数组和对象都有一个key -> value结构。但是数组中的键必须是数字,而任何字符串都可以用作对象中的键。键值对也称为“属性”。
可以使用点表示法访问对象属性
如:var obj = {"name":"mm","gender":"man"};
取obj的name值 obj.name // 结果为mm
如果属性名称不是有效的JavaScript 标识符名称,或者属性名称是变量的值,我们可以使用[]访问对象的属性:
上面获取name的值也可以这样写 obj["name"] //结果为mm
但对于数组,只能使用括号表示法访问数组元素:
var list = ["as","bb","ss","ggd"];
访问list中的第三个值写法为: list[2] //结果为ss ,数组的索引是从0开始的
示例:访问嵌套数据结构
嵌套数据结构是一个数组或对象,它引用其他数组或对象,即其值为数组或对象。可以通过连续应用点或括号符号来访问这些结构。
这是一个例子:
var result = {
index: 42,
person: [{
id: 1,
name: 'foo'
}, {
id: 2,
name: 'bar'
}]
};
result的第二个name属性值表达方式为: result.person[1].name;
或者:result["person"][1]["name"];
总结:对象的属性可以使用 . 或者 [] ,数组只能使用 [index]
在某些情况下,当我们访问对象属性值时返回undefined, 这说明对象/数组根本没有这个属性
如:var foo = {bar: {baz: 42}};
console.log(foo.baz); // undefined
使用console.log检查对象/数组的结构,您尝试访问的属性实际上在对象的第一层,正确代码如下:
console.log(foo.bar.baz); // 42