这些是我的JSON对象。
({
"0":"http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F86040788&",
"1":"http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F87126537&",
"2":"http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F84915833&",
"3":"http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F87317484&",
"4":"http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F86548283&"
})
我用Ajax获取它们,这就是我对它们的看法:
data[0]
至data[4]
。
为什么data.1
等不起作用?我不明白为什么我可以访问像data[0]
这样的对象,因为它们不是数组。
答案 0 :(得分:3)
为什么data.1等不起作用?
这是因为data.1
根据Javascript的语法是无效的语法。打开浏览器控制台并尝试:
var obj = {};
obj[0] = "test";
obj.0; //SyntaxError: Unexpected number
我不明白为什么我可以访问像这个数据[0]这样的对象,因为它们不是数组。
在javascript中,数组和map / dictionary / association数组是一回事。您可以使用object[key]
语法或object.key
语法进行访问。唯一的限制是它应该由解析器解析(它应该是一个标识符),否则它会失败 - 就像你拥有的情况一样。另一个例子:
var obj = {"test-data":1, "test": 2};
obj["test"] // 2
obj.test // 2
obj["test-data"]; // 1
obj.test-data //ReferenceError: data is not defined
//^ is a <MINUS> character, parsed as (obj.test - data)
答案 1 :(得分:1)
Working with objects: Objects and properties
对象属性名称可以是任何有效的JavaScript字符串,或 任何可以转换为字符串的东西,包括空字符串 串。 但是,任何不是有效JavaScript的属性名称 标识符(例如,具有空格或短划线的属性名称,或 以数字开头)只能使用方括号访问 符号。当属性名称为时,此符号也非常有用 动态确定(未确定属性名称时) 直到运行时)。示例如下:
答案 2 :(得分:0)
因为json var name无法从数字
开始