Lưu ý khi sử dụng Object làm Hashmap trong JavaScript
TIL
763
@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

119 bài viết.
2033 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
182 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 5 năm trước
182 46
White
157 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 hơn 4 năm trước
157 39
White
118 19
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 hơn 4 năm trước
118 19
Bài viết liên quan
White
0 4
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 hơn 2 năm trước
0 4
White
4 0
I used Spring boot, Hibernate few times back then at University, I'v started using it again recently. In this (Link), I want to check how Spring J...
Rey viết hơn 1 năm trước
4 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

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


White
{{userFollowed ? 'Following' : 'Follow'}}
119 bài viết.
2033 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á!