Có phải '' Class '' trong ES6 là phần '' Bad '' mới?


Lý Trường Phát
3 năm trước
Hữu ích 3 Chia sẻ Viết bình luận 0
Đã xem 7807

Hôm qua, tôi đã viết một blog 5 phần "Xấu" JavaScript được sửa trong ES6  và đã đề cập đến Lớp Class nghêu là một trong những cách khắc phục. Kể từ đó, tôi đã nhận được rất nhiều phản hồi trong đó nhiều người nghĩ rằng Class Class -syntax trong ES6 đã trở nên tốt hơn và hữu dụng hơn. Tuy nhiên, những người khác chỉ ra rằng không cần từ khóa của lớp Class vì vì JS không có khái niệm về lớp Class (tức là kế hoạch chi tiết). Trên thực tế, lập luận của họ là nó có thể khiến mọi thứ tồi tệ hơn, bởi vì Class Class chính thức của ES6 chỉ là đường cú pháp và không chính xác về mặt kỹ thuật và khái niệm (nghĩa là quảng cáo sai hoặc gây nhầm lẫn nhiều hơn).

Chúng ta hãy xem các tranh luận từ cả hai phía để hiểu rõ hơn.

Luận điểm: Lớp học trong ES6 Phần "Tốt"

Điều đầu tiên mọi người học khi họ học ngôn ngữ OO là khái niệm về Class và cách kế thừa hoạt động, v.v. Trong JS, bạn có thể mô phỏng một lớp Class trực tiếp và thực hiện lập trình OO ngay từ đầu. Tuy nhiên, không có từ khóa Class Class nào và mã để thiết lập nó, tạo các lớp con và gọi các hàm của cha mẹ là lạ và khó hiểu.

Ngoài ra, hầu hết mọi người JS chỉ muốn làm công cụ OO cơ bản và tiếp tục. Nhưng, cú pháp hiện tại ném chúng đi.

Hơn nữa, đây là một cách tùy chọn để tạo Đối tượng. Nó không ngăn cản mọi người tạo ra các đối tượng bằng cách sử dụng các kỹ thuật khác như các nhà máy chức năng, Trực tiếp đối tượng theo nghĩa đen, Trực tiếp v.v.

Vì vậy, làm cho cú pháp trông đẹp hơn và giống với các ngôn ngữ OO khác, trong khi vẫn giữ được tính tốt của tính nguyên mẫu của bản thân là một điều tốt. Mọi người có thể sử dụng các cách khác nếu họ không muốn sử dụng Class Class để tạo Đối tượng.

Luận điểm: Lớp trong ES6 Phần mới "Xấu"

1. Về mặt khái niệm Không có lớp trong JavaScript


Các đối tượng được tạo mà không có Classes! Cách tốt nhất để giải thích điều này là sử dụng sự tương tự trong thế giới thực của những thứ Sống trong cuộc sống (giống như con người) so với những thứ không phải là sống chung (như xe hơi, đồ nội thất, v.v.).

Bức tranh dưới đây mô tả cách tạo đối tượng khác với Java so với JavaScript.






Các đối tượng trong Thế giới Java so với Thế giới JavaScript


Như bạn có thể tưởng tượng, trong JS, không có chi phí hay ràng buộc nào cần một Class để sử dụng các đối tượng. Nguyên mẫu tiếp theo, tính kế thừa dựa trên nền tảng-nền tảng có thể kết nối bất kỳ đối tượng nào với bất kỳ đối tượng nào khác có thể không liên quan (mối quan hệ IS-A). Vì vậy, nó rất linh hoạt so với các lớp học.

2. Xấu đối với lập trình hàm

Trong JS, các hàm là các công dân hạng nhất. Lập trình hàm là tất cả về việc sử dụng các hàm đến mức tối đa của chúng. Có một khái niệm gọi là: “ Favor phần trên Inheritance ở đây chúng tôi đang đi theo hướng ngược lại vì “Class” ký hiệu ủng hộ “Thừa kế trên phần”.

Tóm lược

Đó là một điều tốt bởi vì:

  1. Lớp học là thứ mọi người học và làm cho cú pháp tốt hơn là một điều tốt.
  2. Đây là một tính năng tùy chọn và có nhiều cách khác để tạo các đối tượng như các chức năng của nhà máy.
  3. Sử dụng nó cho mục đích hạn chế là tốt.

Đó là một điều xấu bởi vì:

  1. Khái niệm về Class Class không tồn tại trong JavaScript.
  2. Khái niệm về các lớp học làm cho mọi thứ giòn. Nguyên mẫu tốt hơn và rất linh hoạt.
  3. Nó hướng dẫn mọi người tránh xa sự tốt đẹp và sức mạnh của lập trình chức năng.

Vậy, bạn đứng ở đâu? Có phải lớp Class giữa trong ES6 là phần mới của Bad Bad không?

Đó là nó!

Hữu ích 3 Chia sẻ Viết bình luận 0
Đã xem 7807