いくつかのオブジェクトを含む 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;
それが違いを生むなら。
私の問題を解決するためだけでなく、何が起こっているのかをよりよく理解するためにも、どんな助けも大歓迎です:)