🤪 Symbol 🤪

Symbol trong javascript

symbol là một đối tượng một nhà xây dựng trả về một giá trị nguyên thủy.
js_masterJavascript
javascript-lap-trinh.jpg

Chào các bạn

Trong bài viết này mình sẽ hướng dẫn về ký hiệu symbol.

  • Vậy symbol là gì?.

symbol là một đối tượng một nhà xây dựng trả về một giá trị nguyên thủy.

Tham số truyền vào của symbol có thể là 1 trong 2 kiểu

  1. string mô tả kiểu ký hiệu string
1let id = Symbol("id"); // Tạo mới ký hiệu có mô tả là chuỗi id

id ở đây là chuỗi tùy ý. Ví dụ thay id thành giCungDuoc

  1. number mô tả kiểu ký hiệu number
1let id = Symbol(323); // Tạo mới ký hiệu có mô tả là số 323

323 là số tùy ý. Ví dụ thay 323 thành 1

Các ký hiệu symbol luôn luôn khác nhau mặc dù chúng có mô tả giống nhau

1let id1 = Symbol("id"); // Mô tả chuỗi id giống nhau
2let id2 = Symbol("id"); // Mô tả chuỗi id giống nhau
3
4console.log(id1 === id2); // false

Như các bạn nhìn thấy ở ví dụ trên. Mặc dù chúng ta truyền vào mô tả id cho ký hiệu giống nhau. Nhưng khi so sánh chúng khác nhau.

Ký hiệu symbol không thể gọi với từ khóa new

1let id = new Symbol("id"); // Uncaught TypeError: Symbol is not a constructor

Nếu chúng ta cố gắng gọi nó bằng từ khóa new nó sẽ ném ra lỗi có tên là TypeError và tin nhắn của nó là Symbol is not a constructor

Để lấy ra mô tả symbol bằng cách

1let id = Symbol("ID");
2
3let moTa = id.description; // Lấy ra mô tả
4console.log(moTa); // ID

ID ở đây chính là mô tả ký hiệu

Ngoài ra còn có ký hiệu toàn cầu Symbol.for("id")

Như bạn thấy ở trên ký hiệu symbol luôn luôn khác nhau mặc dù chúng ta truyền vào mô tả giống nhau.

Nhưng Symbol.for("mota") thì lại khác. Chúng giống nhau nếu chúng ta truyền vào mô tả giống nhau.

1let id1 = Symbol.for("id"); // Ký hiệu toàn cầu
2let id2 = Symbol.for("id"); // Ký hiệu toàn cầu
3
4console.log(id1 === id2);   // true

Nếu chúng ta truyển mô tả khác nhau thì nó sẽ khác nhau

1let id1 = Symbol.for("id"); // Ký hiệu toàn cầu
2let id2 = Symbol.for("id2");// Ký hiệu toàn cầu
3
4console.log(id1 === id2);   // false

Để xem mô tả ký hiệu chúng ta đã truyền bằng cách

1let id = Symbol.for("ID");
2
3let moTa = id.description; // Lấy ra mô tả
4console.log(moTa); // ID

ID ở trên chính là mô tả

Vậy câu hỏi đặt ra ở đây là.

Ký hiệu dùng để làm gì?.

Ký hiệu symbol giúp chúng ta ẩn giấu một thông tin gì đó mà không muốn ai biết.

  • Không dùng ký hiệu:
1let user = {
2    id: 1,
3    name: "Hồ Quang Trí",
4    age: 100
5}
6
7for(let key in user) {
8    console.log(key); // id, name, age
9}
  • Dùng ký hiệu:
1let id = Symbol(1); // Ký hiệu có mô tả là số 1
2
3let user = {
4    [id]: "Ký hiệu ẩn",
5    name: "Hồ Quang Trí",
6    age: 100
7}
8
9for(let key in user) {
10    console.log(key); // name, age
11}

Như bạn có thể thấy ký hiệu id bây giờ không suất hiện trong vòng lặp nữa.

Bạn có thể lấy ra giá trị trong ký hiệu đó bằng cách

1let id = Symbol(1); // Ký hiệu có mô tả là số 1
2
3let user = {
4    [id]: "Ký hiệu ẩn",
5    name: "Hồ Quang Trí",
6    age: 100
7}
8
9for(let key in user) {
10    console.log(key); // name, age
11}
12
13
14let giaTriKyHieu = user[id]; // Lấy ra giá trị
15console.log(giaTriKyHieu);   // Ký hiệu ẩn

Tổng kết

Trong bài viết này mình đã nói qua về ký hiệu symbol.

Các bạn muốn tìm hiểu thêm về nó hãy xem tại đây Symbol

  • symbol
  • ký hiệu
  • object

OFFJS.COM - Blog học tập giải trí - 🐲

Chia sẻ nhiều kiến thức thú vị trong lập trình cũng như cuộc sống.

Giới thiệu


Trang web này mình sẽ nói về kiến thức lập trình và cuộc sống mà các bạn mới học hay đang dự định học. Có một bước đi đầu đời vững chắc.

Hồ Quang Trí.jpg

Đi kèm với đó là những lý thuyết và các dòng code minh họa. Để các bạn dễ hình dung.

Đơn nhiên cũng không dễ dàng ngày một ngày hai mà học hết được.

Học Tập Là Một Con Đường Dài Vô Tận

Nó sẽ nuốt các bạn vô số thời gian nhưng bù lại khi đã biết thì mọi thứ thật là tuyệt.

1console.log("Hồ Quang Trí");

Nếu có ai nói bạn học lập trình trong vòng 3 đến 6 tháng thì mình xin nói thật không bao giờ có chuyện đó nhé.

Chúc các bạn thành công.

Chân trang

phone-toan-phat.png

0353210168

address-toan-phat.png

Việt Nam