我遇到了一个奇怪的行为(也许并不奇怪,只是我不理解为什么)涉及一个包含一些对象的 JavaScript 数组。
由于我不是 JavaScript 专家,可能有很清楚的解释为什么会发生这种情况,而我却不知道。
我有一段在文档中运行的 JavaScript 代码。它创建了一个类似下面这样的对象数组:
var myArray = [{"Id":"guid1","Name":"name1"},{"Id":"guid2","Name":"name2"},...];
如果我在创建数组的地方打印出 JSON.stringify(myArray) 的结果,我会得到我期望的内容。[{"Id":"guid1","Name":"name1"},{"Id":"guid2","Name":"name2"},...]
但是,如果我试图从一个子文档访问此数组(一个由第一个文档打开的窗口中的文档),那么这个数组就不再是一个数组了。因此,在子文档中执行JSON.stringify(parent.opener.myArray)将导致以下结果:
{"0":{"Id":"guid1","Name":"name1"},"1":{"Id":"guid2","Name":"name2"},...}
但这不是我期望的结果 - 我期望从子文档中获取到与父文档相同的内容。
有人能解释一下为什么会出现这种情况,以及如何修复,使得从子窗口/文档访问该数组仍然是一个数组吗?
PS. 对象并非按上述方式添加到数组中,而是像这样添加的:
function objTemp()
{
this.Id = '';
this.Name = '';
};
var myArray = [];
var obj = new ObjTemp();
obj.Id = 'guid1';
obj.Name = 'name1';
myArray[myArray.length] = obj;
如果这有任何影响的话。
非常感谢任何帮助,既可以解决我的问题,也可以更好地理解发生了什么 :)