10 khái niệm về Javascript bạn cần biết để phỏng vấn (P4): new
This post hasn't been updated for 4 years
Xin chào mọi người 😁✌ 👋.
Báu đã trở lại để giới thiệu với các bạn phần 4 của chuỗi bài viết 10 khái niệm về Javascript bạn cần biết để phỏng vấn được mang tên: new
.
I. Object
trong Javascript
:
Trước khi tìm hiểu về new
, mình muốn giới thiệu lại về Object
trong Javascript
- JS
. Như mình từng viết ở số trước, hầu hết các kiểu giá trị trong JS
đều mang kiểu Object
. W3School
có 1 bài giới thiệu về Object
như sau:
In JavaScript, objects are king. If you understand objects, you understand JavaScript.
Không phải nói quá đâu, cùng xem qua danh sách phía dưới để hiểu thêm nhé:
- Booleans can be objects (if defined with the new keyword)
- Numbers can be objects (if defined with the new keyword)
- Strings can be objects (if defined with the new keyword)
- Dates are always objects
- Maths are always objects
- Regular expressions are always objects
- Arrays are always objects
- Functions are always objects
- Objects are always objects
All JavaScript values, except primitives, are objects.
Vậy Object
có gì liên quan tới new
không nhỉ?
II. So sánh new
với Object
:
Cùng thử tạo mới 1 Object
không dùng từ khoá new
nhé:
Và giờ là 1 Object
tạo bởi từ khoá new
:
Function PersonalInformation
với từ khoá new
và function personalInformation
đều tạo ra 2 Object
có các properties
giống nhau nhỉ?
III. Sự thật bị ẩn giấu:
Hãy xem qua đoạn code demo
này của mình nhé:
Giờ mình sẽ giải thích 1 chút nha:
- Khi tạo mới một
Object
kết hợp từ khoánew
, chúng ta gọi hàm tạo mới là mộtconstructor
:console.log(demoInfo.constructor) -> [Function: PersonalInformation]
, đồng thời tạo raprototypically inherited
- tính kế thừa tronglập trình hướng đối tượng
. - Những Function này đồng thời cũng sẽ được viết hoa theo kiểu
PascalCase
, đây là mộtcommon practice
. Hãy nhớ đến Class được giới thiệu vào năm 2015, nếu bạn nào thường xuyên làm việc vớiClass
chắc chắn sẽ thấysyntax
rất quen phải không nào? - Từ khoá
new
còn thêm một sốimplicit code
vàoObject
, mà chúng ta không dễ dàng hiển thị bằngconsole.log
, đó làprototype
. - Tạo ra một
Object
rỗng:console.log(this) -> PersonalInformation {}
, và tự độngbind
this
vàoObject
mới:this.name = "Bau"
. - Lệnh
return
trong trường hợp này sẽ trả vềthis
, nếu bạnreturn 10
(hoặc mộtprimitive value
), ngoại trừ trường hợpreturn
Object
,Array
,Function
.
Đây chính là tiền đề để ES6
tạo ra Class
, bạn có thể cảm nhận được làn gió mới này nếu trải nghiệm bộ môn Typescript
.
Trên đây là những chia sẻ cơ bản của mình về biến This
. Cảm ơn các bạn đã theo dõi 🙇♂️.
Và ở bài viết tiếp theo, tụi mình thử trải nghiệm 1 thứ gì đó mới mẻ nhé? Như là VueJS
chẳng hạn 😁🎇🎇🎇🎇.
All Rights Reserved