JavaScript có một hệ thống đối tượng không có lớp trong đó các đối tượng kế thừa các thuộc tính trực tiếp từ các đối tượng khác. Điều này thực sự mạnh mẽ, nhưng nó còn xa lạ với các lập trình viên được đào tạo bài bản. Nếu bạn cố gắng áp dụng các mẫu thiết kế cổ điển trực tiếp vào JavaScript, bạn sẽ thất vọng. Nhưng nếu bạn học cách làm việc với bản chất nguyên mẫu của JavaScript, những nỗ lực của bạn sẽ được đền đáp.
...
Đó là Lisp trong trang phục của C.
Điều này có ý nghĩa gì với một nhà phát triển trò chơi làm việc với canvas và HTML5? Tôi đã xem qua câu hỏi này về các mẫu thiết kế hữu ích trong chơi game, nhưng thừa kế nguyên mẫu rất khác so với thừa kế cổ điển, và chắc chắn có những khác biệt trong cách tốt nhất để áp dụng một số mẫu phổ biến này.
Ví dụ, thừa kế cổ điển cho phép chúng ta tạo ra một moveableEntity
lớp, và mở rộng điều đó với bất kỳ lớp học rằng động thái trên thế giới trò chơi của chúng tôi ( player
, monster
, bullet
, vv). Chắc chắn, bạn có thể mạnh mẽ để JavaScript hoạt động theo cách đó, nhưng khi làm như vậy, bạn là loại chiến đấu chống lại bản chất của nó. Có cách tiếp cận nào tốt hơn cho loại vấn đề này khi chúng ta có quyền thừa kế nguyên mẫu trong tầm tay?