Một phần của tiêu chuẩn ECMA mà tôi tin là các bảng điều khiển Javascript sẽ hiển thị các đối tượng dưới dạng mảng khi các đối tượng giống như mảng.Bàn điều khiển Google Chrome không hiển thị chính xác các đối tượng giống mảng khi trình lập chỉ mục của chúng được nhận/đặt dựa trên?
Chẳng hạn như: ["hello", "world"] cho đối tượng chứa chuỗi được lập chỉ mục số.
Hành vi giống như mảng được định nghĩa là thuộc tính độ dài và phương thức ghép nối có mặt trên đối tượng cũng như các thuộc tính được lập chỉ mục số.
Nhiều người trong chúng ta có thể đã thấy điều này với jQuery trong quá khứ.
Tôi đã cố gắng tận dụng lợi thế của hành vi này và xem xét nó mong muốn. Tuy nhiên tôi có yêu cầu bổ sung rằng các chỉ mục của tôi sử dụng getters/setters để thiết lập chúng để tôi có thể thực hiện một số xử lý bổ sung khi chúng được sửa đổi.
Tuy nhiên khi tôi làm điều này mảng trên được thay render thành:
[undefined × 2]
Tuy nhiên đối tượng cư xử khác chính xác giống như một ví dụ đơn giản.
Xem Fiddle này cho một lời giải thích tốt hơn: http://jsfiddle.net/5YgAv/
Vì vậy, bạn thấy không? Hai ví dụ rất giống nhau, tuy nhiên sự hiện diện của getter đã phá vỡ nó trong giao diện điều khiển.
Tôi đã gỡ lỗi mã nguồn Chromium mới nhất và có vẻ như Chrome đẩy một thông báo vào bảng điều khiển chứa cơ bản chức năng getter. Tuy nhiên không có cách nào để sửa đổi mã nguồn của bảng điều khiển để nó có thể gọi hàm và nhận giá trị. Nếu điều đó là có thể thì chúng ta có thể sửa đổi các công cụ phát triển để xử lý getters và setters một cách chính xác. Điều tôi muốn biết là nếu ai đó có bất kỳ thông tin chi tiết nào về lỗi nhỏ thú vị này hoặc cách nó có thể được khắc phục tốt nhất trước khi tôi gửi nó như một lỗi với nhóm Chrome bị lãng quên và bị chôn vùi trong chiều sâu của Google. Tôi thực sự muốn sửa lỗi này theo cách này hay cách khác.
Tôi cũng mở cho giải pháp thay thế thanh lịch và cho phép tôi thực hiện một số xử lý đặc biệt khi bất kỳ thuộc tính nào trên đối tượng giống mảng của tôi được sửa đổi.
Giúp tôi Obi-Stackoverflow-Kenobi, bạn là niềm hy vọng duy nhất của tôi!
[Ryan]
JavaScript console không nằm trong tiêu chuẩn ES, và không phải là có "hành vi giống như mảng". Chrome có thực sự cần phương pháp ghép nối không? Opera cho ví dụ hiển thị tất cả mọi thứ với một "chiều dài" thuộc tính danh sách giống như. – Bergi
Đó thực sự là cảm ơn sâu sắc! Tôi đã xem xét một cách ngắn gọn tiêu chuẩn và đã đi vào ý kiến của một câu hỏi stackoverflow khác. Cảm ơn vì điều đó. Câu hỏi vẫn là mặc dù, các công cụ phát triển Chrome đang hiển thị không chính xác theo cách Chrome thường hiển thị! –