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()