请参见下面更明确的内容 --> jsFiddle
var simpleArray = []; //note that it is defined as Array Object
alert(typeof simpleArray); // returns object -> Array Object
simpleArray ['test1'] = 'test 1';
simpleArray ['test2'] = 'test 2';
alert(JSON.stringify(simpleArray)); //returns []
它可以正常工作,并在我将
var simpleArray = [];
更改为 var simpleArray = {};
时返回了 {"test1":"test 1","test2":"test 2"}
。有人能否提供一些解释或参考资料,让我可以阅读更多内容?
编辑:
问题:当 typeof simpleArray = []
和 simpleArray = {}
返回对象时,为什么 JSON.stringify 无法在两种情况下都返回 {"test1":"test 1","test2":"test 2"}
?
var simpleArray = []; simpleArray ['test2'] = 'test 2';
时会发生什么? - Matt FenwicksimpleArray.length = 0
,这意味着该数组中没有元素。您仍然可以使用simpleArray.test2
来访问您定义的属性。这只是应该避免的令人困惑的代码。 - Darin DimitrovsimpleArray
声明为数组 -[]
。这意味着您需要使用基于整数的索引。在你的例子中,你没有这样做。所以在这种情况下,simpleArray.length = 0
,就好像这个数组没有包含任何元素一样。因此,JSON.stringify
方法将序列化这个空数组为[]
是完全正常的。你刚刚违反了数组必须具有基于整数的索引的规则,当你违反规则时会发生一些不好的事情。 - Darin Dimitrov