我想知道这段代码之间的区别是什么:
var c = [{"test": 1}];
和此代码
var c = {"test": 1};
Firebug说它们都是对象,但如果你用第一个例子做console.log(c.test),它将返回“undefined”。所以我有点想知道这一切是什么以及如何访问第一个例子?
答案 0 :(得分:8)
第一个是包含一个元素的数组,它是{"test": 1}
个对象,而第二个是{"test": 1}
个对象本身。
首先你可以c[0].test
,第二个你可以c.test
。
答案 1 :(得分:1)
第一个c是包含Object的Array,第二个是Object。
在JavaScript中,一切都是一个对象,这就是为什么Firebug说它们都是对象的原因。要从第一个c获取test属性,您必须引用Array的第一个元素(作为实际的Object),因此c[0].test
将返回1.如果您需要知道c是(实例)是数组,尝试在Firebug控制台中键入c instanceof Array
并运行它(返回true
)。要验证数组是否也是对象,请对c instanceof Object
执行相同操作(返回true
)。