Các tính năng ES2019 (ES10)

Tram Ho

Array.prototype.{flat,flatMap}

flat() là một instance method mới của array, nó có thể tạo ra mảng một chiều từ một mảng đa chiều.

Ví dụ:

Mặc định hàm sẽ chỉ “flat” một chiều, bạn có thể thêm param để set số chiều bạn muốn. Bạn có thể set infinity để flat toàn bộ các chiều:

Chắc hẳn các bạn đã quá quen thuộc với method map() của mảng. Như các bạn đã biết, nó được dùng để thực thi một function nào đó trên mỗi phần tử của mảng.

flatMap() là một instance method mới của mảng kết hợp giữa flat()map(). Nó sẽ khá hữu dụng khi bạn chạy một hàm trả về một mảng nhưng lại muốn mảng đó được flat:

Optional catch

Trước đây, khi sử dụng try/catch bạn luôn phải viết:

kể cả khi bạn không cần dùng đến e để handle lỗi. Giờ thì bạn có thể loại bỏ nó đi nếu không cần dùng:

Object.fromEntries()

Từ ES2017, Object có thêm method entries(). Nó trả về một mảng chứa toàn bộ các thuộc tính của object, mảng trả về sẽ có dạng các cặp key, value:

ES2019 mang tới method mới fromEntries(), dùng để tạo một object mới từ một mảng các thuộc tính:

String.prototype.{trimStart,trimEnd}

Tính năng này đã xuất hiện trong v8/Chrome và sau đó nó cũng đã được chuẩn hóa trong ES2019.

trimStart()

Trả về một string đã được xóa các khoảng trắng ở đầu của string gốc:

trimEnd()

Trả về một string đã được xóa các khoảng trắng ở cuối của string gốc:

Symbol.prototype.description

Giờ bạn có thể lấy description của một symbol bằng cách truy cập thuộc tính description thay vì phải dùng method toString():

Cải tiến JSON

Trước khi được cải tiến, nếu trong một string có các kí tự phân dòng (u2028) và phân đoạn văn bản (u2029) thì khi dùng JSON.parse(), những kí tự đó sẽ bị báo SyntaxError. Giờ thì chúng đã có thể được parse bình thường.

Sửa lỗi của JSON.stringify()

Sửa lỗi output của JSON.stringify() khi xử lý các code point UTF-8 thay thế (từ U+D800 đến U+DFFF).

Trước đây, khi gọi JSON.stringify() với các code point thay thế thì nó sẽ trả về một ký tự Unicode lỗi (ký tự “�”).

Giờ đây, những code point thay thế đó đã có thể được thể hiện dưới dạng string một cách bình thường bằng JSON.stringify(), và có thể biến đổi lại dạng ban đầu của chúng bằng JSON.parse().

Function.prototype.toString()

Function có một instance method là toString() trả về một đoạn string chứa code của function.

ES2019 đã thay đổi giá trị trả về của method này nhằm tránh việc loại bỏ comment và các kí tự khác (ví dụ như khoảng trắng), thể hiện chính xác code của hàm đã được khai báo ra.

Trước đây, với hàm được khai báo như sau:

kết quả sẽ như sau:

còn giờ thì kết quả sẽ như sau:


(Hết)

Đến thời điểm bài viết này hoàn thành thì ES2019 là phiên bản mới nhất của ECMAScript, vì vậy mình xin tạm dừng series tại đây. Mình sẽ cố gắng cập nhật khi các tính năng mới được phát hành, cảm ơn các bạn đã theo dõi trong thời gian qua. 🙏

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo