Mỗi object có một liên kết ẩn [[Prototype]] (đọc qua Object.getPrototypeOf, hoặc __proto__) trỏ tới object khác. Khi truy cập một property mà object không có, engine đi ngược lên chuỗi prototype cho tới khi tìm thấy hoặc chạm null. Đó là prototype chain.
obj.hasOwnProperty(k)phân biệt property riêng và kế thừa.Object.create(proto)tạo object với prototype chỉ định.classlà syntactic sugar (cú pháp rút gọn) trên prototype:extendsgắn prototype cha, method của class nằm trênClass.prototypeđể mọi instance dùng chung.- Khác OOP class-based (Java): JS kế thừa object → object, không cần "khuôn" class thật.
Lợi ích: method định nghĩa một lần trên prototype, mọi instance chia sẻ — tiết kiệm bộ nhớ.