Class trong Javascript
Trong Javascript trước ES2015 không có từ khóa class tuy nhiên Javascript hổ trợ từ khóa new với function tương đương việc viết constructor của class và tạo object từ class trong các ngôn ngữ khác như Java/C#.
|
|
Cơ bản thì this tương tự như this trong Java, new cũng tương đương với new, còn function thì tương đương với constructor trong Java. Tên class cũng chính là tên hàm Animal.
Toán tử new
Trong ví dụ trên, khi gọi toán tử new thì Javascript sẽ tạo ra một đối tượng. Đối tượng này sẽ thừa kế Animal.prototype và thực thi hàm khởi tạo (contructor), cũng chính là hàm Animal với từ khóa this trỏ đến đối tượng vừa tạo ra. Sau đó trả về đối tượng đó.
Ví dụ sau sẽ tương đương với ví dụ trước nhưng không dùng toán tử new.
|
|
Thuộc tính prototype
Khi tạo một hàm, hàm đó có thêm một thuộc tính là prototype là một object thừa kế Object.prototype.
|
|
Object.prototype là một object không có cha (thừa kế từ null) và có các hàm tạo sẵn như toString, isPrototypeOf, hasOwnProperty. Mọi đối tượng đều thừa kế từ Object.prototype này.
|
|
Ngoài ra Animal.prototype còn có một thuộc tính là contructor trỏ đến chính hàm Animal.
|
|
Kết luận như sau:
object pet <–thừa kế– Animal.prototype <–thừa kế– Object prototype
object pet <–constructor– Animal()