Prototype

Prototype
Trong Javascript không thừa kế theo kiểu Class-inheritance như Java/C# mà thừa kế theo Prototypal-inheritance. Trong Java/C# thì class thừa kế class, còn đối với Javascript thì object thừa kế object.
Prototype Chain
Một thuộc tính của object mà tìm trên con không có sẽ tìm lên cha, nếu không có tiếp tục tìm lên ông và cứ tiếp tục cho đến đối tượng gốc là Object.prototype
Toán tử new
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#.
Phương thức và static
Khi tạo object với thừa khóa `new` thì object sẽ thừa kế thuộc tính `prototype` của class. Nên chúng ta thêm các phương thức vô các `prototype` này. Còn các thuộc tính chúng ta thêm vào ở constructor.
Thừa kế
Hàm `Object.create(proto)` tạo ra một đối tượng mới có thừa kế từ đối tượng `proto`. Chúng ta sử dụng hàm Object.create() và giữ lại constructor của class cũ là cài đặt được tính chất thừa kế.
Từ khóa class, extends
Từ ES2015, chúng ta có thể sử dụng thêm từ khóa `class` và `extends` cùng với hàm `constructor` và hàm `super` của class. Đây là cú pháp thay thế (sugar syntax) cho cú pháp sử dụng thừa kế phương pháp cũ chứ bản thân bên trong ngôn ngữ JavaScript không có gì thay đổi.