Tôi đang gặp một hành vi kỳ quặc (có thể nó không phải là lạ chút nào nhưng chỉ tôi không hiểu tại sao) với một mảng javascript chứa một số đối tượng.Mảng Javascript trở thành một cấu trúc đối tượng
Vì tôi không có chuyên gia javascript, có thể giải thích rõ ràng là tại sao điều này xảy ra, tôi không biết điều đó.
Tôi có javascript đang chạy trong tài liệu. Nó làm cho một mảng của các đối tượng tương tự như sau:
var myArray = [{"Id":"guid1","Name":"name1"},{"Id":"guid2","Name":"name2"},...];
Nếu tôi in ra mảng này tại nơi nó được tạo ra như JSON.stringify (myArray), tôi nhận được những gì tôi đã mong đợi:
[{"Id":"guid1","Name":"name1"},{"Id":"guid2","Name":"name2"},...]
Tuy nhiên, nếu tôi cố gắng truy cập mảng này từ một tài liệu con cho tài liệu này (một tài liệu trong một cửa sổ được mở bởi tài liệu đầu tiên) thì mảng đó không còn là mảng nữa. Vì vậy, làm JSON.stringify (parent.opener.myArray) trong tài liệu đứa trẻ sẽ dẫn đến việc sau đây:
{"0":{"Id":"guid1","Name":"name1"},"1":{"Id":"guid2","Name":"name2"},...}
Và đây không phải là những gì tôi đã mong đợi - Tôi đã chờ đợi để có được giống như tôi đã làm trong tài liệu gốc.
Bất cứ ai có thể giải thích cho tôi tại sao điều này xảy ra và cách khắc phục để mảng vẫn là một mảng khi được giải quyết từ cửa sổ/tài liệu con?
PS. các đối tượng không được thêm vào mảng như đã nêu ở trên, chúng được thêm như sau:
function objTemp()
{
this.Id = '';
this.Name = '';
};
var myArray = [];
var obj = new ObjTemp();
obj.Id = 'guid1';
obj.Name = 'name1';
myArray[myArray.length] = obj;
Nếu có sự khác biệt nào.
Bất kỳ trợ giúp sẽ được nhiều đánh giá cao, cả hai để sửa chữa vấn đề của tôi mà còn để hiểu rõ hơn những gì đang xảy ra :)
Tôi không thể sao chép. Bạn đã kiểm tra trình duyệt nào? Bạn đã sử dụng thư viện JSON chưa? – Bergi
Tôi đang thử nghiệm trong IE vì đó là yêu cầu. Cá nhân tôi sẽ không chọn IE nhưng nó không phải là tùy thuộc vào tôi. Tôi chỉ sử dụng json trong ví dụ này để xâu chuỗi cảnh báo của tôi. Tôi không sử dụng bất kỳ thư viện json nào cho mã tạo ra hành vi. – Aidal
Xin chào, cảm ơn vì đã chấp nhận. Vui mừng khi biết cách giải quyết của tôi tỏ ra hữu ích. Happy coding :) + 1 cho câu hỏi của bạn BTW. Tôi đã học được từ nó, quá –