我遇到了一个奇怪的行为(也许它根本不奇怪,但只是我不明白为什么)一个包含一些对象的 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;
如果这有什么不同的话。
任何帮助都将不胜感激,既可以解决我的问题,也可以更好地了解正在发生的事情:)