Đầu tiên ta cần nói JavaScript là một ngôn ngữ prototype-based không có khái niệm class như các ngôn ngữ class-based khác như java.
Prototype là cơ
chế mà các object trong javascript kế thừa các tính năng
từ một object khác. Tất cả các object trong js đều có
một prototype, và các object này kế thừa các property và
method từ prototype của mình.
Bản thân prototype cũng là 1 object. Cái này khác với thuộc tính prototype của function.(function cũng là object trong js).
=> ta dùng hàm để tạo ra một mẫu đối tượng thì ta có thể thêm property hoặc method vào thuộc tính prototype của hàm khởi tạo để thực hiện kế thừa. Tất cả đối tượng con của hàm khởi tạo này đều sẽ kế thừa tất cả giá trị từ prototype của hàm này
– Ngoài ta ta có thể dùng thuộc tính __proto__ để truy cập tới prototype object
vd:
function animal() {
this.age =4;
}
aniaml.prototype.weight = 10;
function westDog() {
this.color = “yellow;
}
westDog.prototype = new animal();
let Jack = new westDog();
//Jack sẽ có đầy đủ thuộc tính, phương thức của animal và westDog.
Ngoài ra từ ECMAScript 6 đã có class dùng để khởi tạo lớp dùng dễ dàng hơn 1 chút. Chi tiết có thể tôi sẽ viết trong bài viết khác.
Conal Dev