Trong buổi đánh giá mã ngày hôm nay, một đồng nghiệp của tôi đã nói một điều thú vị:
prototype
chỉ hữu ích khi bạn cần thừa kế - và khi nào thì thừa kế bao giờ là một ý tưởng tốt ?
Tôi đã nghĩ về điều này và tôi nhận ra rằng tôi thường sử dụng tính kế thừa để đi vòng quanh mã được thiết kế tồi ngay từ đầu. Phong cách OO hiện đại thích sáng tác hơn sự kế thừa, nhưng tôi không biết bất kỳ ngôn ngữ nào đã làm điều này thành trái tim và thực sự thi hành nó.
Có bất kỳ ngôn ngữ lập trình đa mục đích nào với các lớp, đối tượng, phương thức, giao diện, v.v., không cho phép kế thừa dựa trên lớp không? (Nếu một ý tưởng như vậy không có ý nghĩa, tại sao không?)
implements
từ khóa và giao diện (trái ngược với sự kế thừa của trạng thái và hành vi được giới thiệu với việc sử dụng extends
từ khóa trên các lớp có chứa bất kỳ triển khai nào).
new
, this
Và prototype
tất cả đều quá nhiều của một bãi mìn để sử dụng chung IMO.
prototype
này cũng hữu ích khi bạn có các phương thức và thuộc tính công khai nên được chia sẻ giữa các trường hợp. Nó cũng hữu ích vì nó cho phép bạn sử dụng đúnginstanceof
toán tử trong JavaScript :if (foo instanceof Foo) { ...
.