Lưu ý khi sử dụng Object làm Hashmap trong JavaScript
TIL
594
@100daysTIL
72
White

Huy Trần viết ngày 05/02/2018

#Day003

Mặc dù JavaScript đã có kiểu Map, nhiều người vẫn muốn dùng Object để làm hashmap đơn giản vì nó tiện. Kiểu như này:

let hash = {};
hash["a"] = 10;

Vấn đề của cách dùng này nằm ở cách mà JavaScript khởi tạo Object, câu lệnh khai báo biến hash trên tương đương với:

let hash = Object.create(Object.prototype);

Đối tượng hash được khởi tạo và kế thừa từ Object.prototype, nên cấu trúc của nó sẽ như này:

alt text

Các key trong Prototype của Object có thể được truy xuất trực tiếp trên hash luôn, như vậy sẽ có khả năng bị collapse (trùng key) khi dùng nó làm hashmap.

Một cách để loại bỏ Prototype đó là truyền null vào tham số prototype khi khởi tạo Object:

let hash = Object.create(null);
hash["a"] = 10;

alt text

huytd 06-02-2018

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Huy Trần

109 bài viết.
1593 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
155 46
Tại sao phải viết blog kĩ thuật? Có rất nhiều bài viết trên mạng nói về vấn đề tại sao một lập trình viên nên thường xuyên viết các bài blog kĩ thu...
Huy Trần viết 3 năm trước
155 46
White
149 39
(Ảnh) Tiếp tục sêri (Link) lần này, chúng ta sẽ cùng tìm hiểu và mô phỏng lại một chức năng mà mọi người đang bắt đầu sử dụng hằng ngày, đó là chứ...
Huy Trần viết 2 năm trước
149 39
White
104 17
Phần 1: Tự truyện Tui và Toán đã từng là hai kẻ thù không đội trời chung trong suốt hơn mười lăm năm ròng rã. Ngay từ ánh nhìn đầu tiên đã ghét nh...
Huy Trần viết 2 năm trước
104 17
Bài viết liên quan
White
0 2
fCC: Technical Documentation Page note So I have finished the HTML part of this exercise and I want to come here to lament about the lengthy HTML ...
HungHayHo viết 1 tháng trước
0 2
White
19 1
Toán tử XOR có tính chất: + A XOR A = 0 + 0 XOR A = A Với tính chất này, có thể cài đặt bài toán sau với độ phức tạp O(N) về runtime, và với O(1)...
kiennt viết gần 2 năm trước
19 1
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
109 bài viết.
1593 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!