Không có cách ngắn gọn nào để thao tác trực tiếp các "phím" của một đối tượng Javascript. Nó không thực sự được thiết kế cho điều đó. Bạn có quyền tự do đặt dữ liệu của mình vào thứ gì đó tốt hơn đối tượng thông thường (hoặc Mảng, như mã mẫu của bạn gợi ý) không?
Nếu vậy, và nếu câu hỏi của bạn có thể được diễn đạt lại là "Tôi nên sử dụng đối tượng giống như từ điển nào nếu tôi muốn lặp lại các khóa theo thứ tự được sắp xếp?" thì bạn có thể phát triển một đối tượng như thế này:
var a = {
keys : new Array(),
hash : new Object(),
set : function(key, value) {
if (typeof(this.hash[key]) == "undefined") { this.keys.push(key); }
this.hash[key] = value;
},
get : function(key) {
return this.hash[key];
},
getSortedKeys : function() {
this.keys.sort();
return this.keys;
}
};
// sample use
a.set('b',1);
a.set('z',1);
a.set('a',1);
var sortedKeys = a.getSortedKeys();
for (var i in sortedKeys) { print(sortedKeys[i]); }
Nếu bạn không có quyền kiểm soát thực tế là dữ liệu nằm trong một đối tượng thông thường, tiện ích này sẽ chuyển đổi đối tượng thông thường thành từ điển đầy đủ chức năng của bạn:
a.importObject = function(object) {
for (var i in object) { this.set(i, object); }
};
Đây là một định nghĩa đối tượng (thay vì một hàm tạo có thể tái sử dụng) để đơn giản hóa; chỉnh sửa theo ý muốn.