Javascript đang trở thành ngôn ngữ lập trình phổ biến nhất thế giới. Là công cụ để xây dựng hầu hết những ứng dụng hiện đại từ web tới mobile. Đi kèm với đó là số lượng người học javascript cũng tăng lên chóng mặt. Nhưng việc học javascript online chưa bao giờ là dễ cả.
Bài này chúng ta sẽ cùng nhau tìm hiểu về một số chủ đề nâng cao trong Javascript sẽ giúp bạn cải thiện nó nhé:
This trong Javascript
this
trong Javascript chính là bối cảnh(context) của nơi mà hàm chứa từ this
được gọi. Bạn hãy nhớ từ this
tham chiếu tới cái vùng không gian mà hàm chứa từ this
được gọi.
Chỉ có 2 loại context đối với this
là object chứa method được gọi hoặc global , ngoài ra không có loại khác. Khi gặp từ this
, chỉ quan tâm tới cái nơi gọi hàm chứa nó chứ không được dịch this
là nội hàm hiện tại.
Chúng ta sẽ cùng tìm hiểu kỹ hơn trong video này nhé:
Prototype trong Javascript
Khi lập trình, mọi người thường mong muốn có thể tái sử dụng code và mở rộng thêm các tính năng.
Ví dụ, bạn có một đối tượng user
với các thuộc tính và phương thức. Sau đó, bạn muốn tạo đối tượng mới là admin
và guest
dựa trên đối tượng user
, nhưng không phải copy-paste lại code mà chỉ sử dụng lại những thứ mà user
có, rồi tạo thêm thuộc tính hoặc phương thức mới.
Để làm được điều đó, bạn có thể sử dụng prototype
trong JavaScript để kế thừa lại object user
. Vậy prototype là gì và cách sử dụng prototype như thế nào hay coi video dưới đây nhé!
Currying trong JavaScript
Cũng như Prototype
, chúng ta luôn hướng đến viết một đoạn code mà có thể sử dụng nó lại nhiều lần và ít tốn kém thời gian hơn. Curying
giúp chúng ta tốt trong việc sử dụng lại các chức năng. Nói một cách khác mà trong các framework hay xây dựng các hàm helper để định nghĩa một hàm nào đó mà được sử dụng lại nhiều lần.
Currying là kỹ thuật mà cho phép chuyển đổi một function với nhiều tham số thành những functions liên tiếp có một tham số. Nói cách khác, khi một function, thay vì lấy tất cả arguments cùng một lúc, lấy hàm thứ nhất và trả về hàm mới lấy hàm thứ hai và trả về hàm mới lấy hàm thứ ba, và tiếp tục cho đến khi tất cả các đối số đã được hoàn thành. Cùng tìm hiểu thêm trong video dưới đây nhé!
Higher Order Functions trong Javascript
Function chấp nhận đầu vào và/hoặc đầu ra là một function được gọi là higher order function.
Thay vì string
, number
, boolean
, nó sử dụng function khác để làm in/out, nên vì thế ở cấp độ cao hơn như việc vận hành function.
Với function trong Javascript, bạn có thể:
- Lưu chúng như biến
- Sử dụng như array
- Assign các thuộc tính như một object
- Cho vào các giá trị argument
- Return từ một function khác
Để hiểu sâu hơn về Higher Order Functions trong Javascript hãy xem video này nhé!
Shallow copy và Deep copy trong Javascript
Trong lập trình, chúng ta lưu trữ data dưới dạng các biến. Tạo một copy tức là khởi tạo một biến mới có cùng giá trị. Tuy nhiên luôn có cạm bẫy luôn rình rập, đó là deep copy
và shallow copy
.
Deep copy
(sao chép sâu) tức là tạo mới một biến có cùng giá trị và được cắt đứt quan hệ hoàn toàn với biến được copy.
Shallow copy
có ý nghĩa rằng sau khi copy, biến mới hoặc các thành phần của biến mới vẫn còn quan hệ dây mơ rễ má với biến ban đầu, nguy hiểm quá nhỉ. Để hiểu thêm về copy, chúng ta cùng tìm hiểu video dưới đây