Biên soạn các câu trả lời khác:
Vật
var test = {};
Khi sử dụng một số làm khóa của thuộc tính mới, số đó sẽ biến thành một chuỗi:
test[2300] = 'Some string';
console.log(test['2300']);
// Output: 'Some string'
Khi truy cập giá trị của thuộc tính bằng cách sử dụng cùng một số, số đó lại được chuyển thành chuỗi:
console.log(test[2300]);
// Output: 'Some string'
Tuy nhiên, khi lấy chìa khóa từ đối tượng, chúng sẽ không được chuyển trở lại thành số:
for (var key in test) {
console.log(typeof key);
}
// Output: 'string'
Bản đồ
ECMAScript 6 cho phép sử dụng đối tượng Bản đồ ( tài liệu , so sánh với Đối tượng ). Nếu mã của bạn được hiểu cục bộ hoặc bảng tương thích ECMAScript 6 trông đủ xanh cho mục đích của bạn, hãy xem xét sử dụng Bản đồ:
var test = new Map();
test.set(2300, 'Some string');
console.log(test.get(2300));
// Output: 'Some string'
Không có chuyển đổi loại nào được thực hiện, tốt hơn và xấu hơn:
console.log(test.get('2300'));
// Output: undefined
test.set('2300', 'Very different string');
console.log(test.get(2300));
// Output: 'Some string'