Understand Javascript : Built-In Function Contructors





Trong vài bài trước mình có nói rằng trong JS có 7 kiểu dữ liệu number , date , boolean , string đây là các kiểu dữ liệu nguyên thủy , primitive tiếp thep là null , underfine , object , array.
number , string hay boolean đếu không phải object
Nhưng bạn có thể thấy qua ví dụ này :


a có các property như một object vậy , tại sao ??
Bởi vì JS dựng sẵn các hàm , kiểu như hàm String , hàm Number để bạn thao tác dễ dàng với biến hơn , khi bạn khai báo một biến kiểu primitive JS sẽ nhận biết được và wrapper biến đó lại trong hàm này.
Giống như kiểu thế này :  var a = new String ("John") , từ đó biến a sẽ được coi như một object trong khi bản thân nó có kiểu dữ liệu primitive , các method được cung cấp cho a nằm trong prototype của hàm string.


Từ điều này bạn có thể thấy mình có thể thêm tùy ý các method vào các hàm tạo được js dựng sẵn này và các hàm này sẽ được áp dụng cho tất cả các biến dữ liệu kiểu đó.

Ví dụ :


Bạn thấy đó mình có thể gắn thêm một method lên prototype của hàm tạo dựng sẵn bởi js điều này rất tiện lợi nhưng bạn cũng cần chú ý một vài điều khi bạn sử dụng mô hình này, hãy cùng quan sát ví dụ sau :


Khi bạn so sánh a với b thông qua toán tứ == trả về true vì JS tự động converter dữ liệu
Nhưng vấn đề xày ra khi bạn dùng toán tử === , jse sẽ quan sát và thấy rằng a kiểu number và b kiểu object nên trả về false , điều này gây nên rất nhiều hiểu lầm vì khi so sánh qua toán tử === nó quan tâm đến kiểu dữ liệu đầu tiên , khi bạn khai báo let a = 3 nó hiểu rằng bạn muốn khai báo kiểu primitive còn khi bạn khai báo let b = new Number(3) nó hiểu rằng b có kiểu object.

Mô hình sử dụng Contructor Function rất phổ biến trong các lib và fw hiện nay để có thể thêm các tính năng.Lưu ý rằng trong JS mảng thật ra một object , index trong mảng được coi như key trong obj ect nên khi dùng for in với dữ liệu kiểu mảng nó sẽ lọc qua các index của mảng.

Nhận xét

Bài đăng phổ biến