Cách gọi một phương thức từ một lớp khác trong JavaScript
Trong Java, một phương thức có thể được gọi từ một lớp khác dựa trên công cụ sửa đổi truy cập của nó. Ví dụ: một phương thức được tạo bằng công cụ sửa đổi công khai có thể được gọi từ bên trong cũng như bên ngoài lớp/gói. Phương thức được bảo vệ có thể được gọi từ một lớp khác bằng cách sử dụng tính kế thừa. Một phương thức tĩnh của một lớp có thể được gọi từ một số lớp khác bằng cách sử dụng tên lớp. Bài viết này đã xem xét nhiều ví dụ để giải thích cách gọi một phương thức từ một lớp khác trong Java Show Trong phần này, bạn sẽ nghiên cứu cách truy cập các phương thức của một lớp khác. Đối với điều này, chúng tôi đã tạo hai tệp java
Trong ví dụ, năm phương pháp, cụ thể là. cộng, trừ, nhân, chia và mô đun đã được tạo bên trong lớp CallingMethod dưới CallingMethod. tập tin java. Bây giờ để truy cập vào các phương thức của lớp CallingMethod bên trong lớp MainClass, một đối tượng của lớp CallingMethod của CallingClass. tệp java phải được tạo bên trong lớp MainClass. java như trong ví dụ Các lớp là một khuôn mẫu để tạo các đối tượng. Họ đóng gói dữ liệu bằng mã để làm việc trên dữ liệu đó. Các lớp trong JS được xây dựng trên nguyên mẫu nhưng cũng có một số cú pháp và ngữ nghĩa không được chia sẻ với ngữ nghĩa giống như lớp ES5 Các lớp trên thực tế là "các hàm đặc biệt" và giống như bạn có thể định nghĩa các biểu thức hàm và khai báo hàm, cú pháp lớp có hai thành phần. biểu thức lớp và khai báo lớp Một cách để định nghĩa một lớp là sử dụng khai báo lớp. Để khai báo một lớp, bạn sử dụng từ khóa 8 với tên của lớp ("Rectangle" ở đây)
cẩuMột sự khác biệt quan trọng giữa khai báo hàm và khai báo lớp là trong khi các hàm có thể được gọi trong mã xuất hiện trước khi chúng được định nghĩa, các lớp phải được xác định trước khi chúng có thể được xây dựng. Mã như sau sẽ ném một 9
Điều này xảy ra bởi vì trong khi lớp được nâng lên, các giá trị của nó không được khởi tạo Một biểu thức lớp là một cách khác để định nghĩa một lớp. Biểu thức lớp có thể được đặt tên hoặc đặt tên. Tên được đặt cho một biểu thức lớp được đặt tên là cục bộ cho phần thân của lớp. Tuy nhiên, nó có thể được truy cập thông qua thuộc tính 0
Ghi chú. Các biểu thức lớp phải được khai báo trước khi chúng có thể được sử dụng (chúng phải tuân theo các hạn chế nâng giống như được mô tả trong phần) Phần thân của một lớp là phần nằm trong dấu ngoặc nhọn 1. Đây là nơi bạn định nghĩa các thành viên của lớp, chẳng hạn như các phương thức hoặc hàm tạoPhần thân của một lớp được thực thi ở chế độ nghiêm ngặt, tôi. e. , mã được viết ở đây tuân theo cú pháp chặt chẽ hơn để tăng hiệu suất, một số lỗi im lặng khác sẽ được đưa ra và một số từ khóa nhất định được dành riêng cho các phiên bản ECMAScript trong tương lai Phương thức khởi tạo là một phương thức đặc biệt để tạo và khởi tạo một đối tượng được tạo bằng một 8. Chỉ có thể có một phương thức đặc biệt với tên "hàm tạo" trong một lớp. Một 3 sẽ bị ném nếu lớp chứa nhiều hơn một lần xuất hiện của phương thức 4Một hàm tạo có thể sử dụng từ khóa 5 để gọi hàm tạo của siêu lớpCác khối khởi tạo tĩnh cho phép khởi tạo linh hoạt bao gồm đánh giá các câu lệnh trong quá trình khởi tạo và cấp quyền truy cập vào phạm vi riêng tư Nhiều khối tĩnh có thể được khai báo và chúng có thể được xen kẽ với việc khai báo các thuộc tính và phương thức tĩnh (tất cả các mục tĩnh được đánh giá theo thứ tự khai báo) Xem thêm định nghĩa phương pháp 1Xem thêm Iterators và generators 2Từ khóa tĩnh định nghĩa một phương thức hoặc thuộc tính tĩnh cho một lớp. Các thành viên tĩnh (thuộc tính và phương thức) được gọi mà không khởi tạo lớp của chúng và không thể được gọi thông qua một thể hiện của lớp. Các phương thức tĩnh thường được sử dụng để tạo các chức năng tiện ích cho một ứng dụng, trong khi các thuộc tính tĩnh hữu ích cho bộ đệm, cấu hình cố định hoặc bất kỳ dữ liệu nào khác mà bạn không cần sao chép qua các phiên bản 3Khi một phương thức tĩnh hoặc nguyên mẫu được gọi mà không có giá trị cho 6, chẳng hạn như bằng cách gán phương thức đó cho một biến và sau đó gọi nó, giá trị 6 sẽ là 9 bên trong phương thức. Hành vi này sẽ giống nhau ngay cả khi không có chỉ thị 10, bởi vì mã trong ranh giới cú pháp của phần thân 8 luôn được thực thi ở chế độ nghiêm ngặt 9Nếu chúng ta viết lại phần trên bằng cách sử dụng cú pháp dựa trên hàm truyền thống ở chế độ không nghiêm ngặt, thì các lệnh gọi phương thức 6 sẽ tự động được liên kết với giá trị 6 ban đầu, theo mặc định là đối tượng toàn cục. Ở chế độ nghiêm ngặt, tự động liên kết sẽ không xảy ra; 3Các thuộc tính của thể hiện phải được định nghĩa bên trong các phương thức của lớp
Khai báo trường công khaiVới cú pháp khai báo trường JavaScript, ví dụ trên có thể được viết là 5Các trường lớp tương tự như các thuộc tính đối tượng, không phải biến, vì vậy chúng tôi không sử dụng các từ khóa như 15 để khai báo chúng. Trong JavaScript, hãy sử dụng cú pháp định danh đặc biệt, vì vậy cũng không nên sử dụng các từ khóa bổ trợ như 16 và 17Bằng cách khai báo các trường từ trước, các định nghĩa lớp trở nên dễ tự ghi lại hơn và các trường luôn hiện diện Như đã thấy ở trên, các trường có thể được khai báo có hoặc không có giá trị mặc định Xem các trường lớp công khai để biết thêm thông tin Khai báo trường riêngSử dụng các trường riêng tư, định nghĩa có thể được tinh chỉnh như bên dưới 0Lỗi khi tham chiếu các trường riêng từ bên ngoài lớp; . Bằng cách xác định những thứ không hiển thị bên ngoài lớp, bạn đảm bảo rằng người dùng trong lớp của bạn không thể phụ thuộc vào nội bộ, điều này có thể thay đổi từ phiên bản này sang phiên bản khác Ghi chú. Các trường riêng tư chỉ có thể được khai báo trước trong khai báo trường Các trường riêng không thể được tạo sau này thông qua việc gán cho chúng, theo cách mà các thuộc tính thông thường có thể Để biết thêm thông tin, hãy xem các tính năng của lớp riêng Từ khóa 18 được sử dụng trong khai báo lớp hoặc biểu thức lớp để tạo một lớp với tư cách là con của một lớp khác 1Nếu có một hàm tạo trong lớp con, trước tiên nó cần gọi super() trước khi sử dụng "this" Người ta cũng có thể mở rộng các "lớp" dựa trên chức năng truyền thống 2Lưu ý rằng các lớp không thể mở rộng các đối tượng thông thường (không thể xây dựng). Nếu bạn muốn kế thừa từ một đối tượng thông thường, thay vào đó bạn có thể sử dụng 20 3Bạn có thể muốn trả về các đối tượng 21 trong lớp mảng dẫn xuất của mình 22. Mẫu loài cho phép bạn ghi đè các hàm tạo mặc địnhVí dụ: khi sử dụng các phương thức như 23 trả về hàm tạo mặc định, bạn muốn các phương thức này trả về đối tượng 21 cha, thay vì đối tượng 22. Biểu tượng 26 cho phép bạn làm điều này 4Từ khóa 5 được sử dụng để gọi các phương thức tương ứng của siêu lớp. Đây là một lợi thế so với kế thừa dựa trên nguyên mẫu 5Các lớp con hoặc hỗn hợp trừu tượng là các mẫu cho các lớp. Một lớp ECMAScript chỉ có thể có một lớp cha duy nhất, do đó, chẳng hạn như nhiều kế thừa từ các lớp công cụ là không thể. Các chức năng phải được cung cấp bởi lớp cha Có thể sử dụng một hàm có siêu lớp làm đầu vào và một lớp con mở rộng siêu lớp đó làm đầu ra để triển khai các phần trộn trong ECMAScript 6Sau đó, một lớp sử dụng các kết hợp này có thể được viết như thế này 7Một lớp không thể được định nghĩa lại. Cố gắng làm như vậy sẽ tạo ra một 3Nếu bạn đang thử nghiệm mã trong trình duyệt web, chẳng hạn như Bảng điều khiển web Firefox (Công cụ > Nhà phát triển web > Bảng điều khiển web) và bạn 'Chạy' định nghĩa của một lớp có cùng tên hai lần, thì bạn sẽ nhận được 30. (Xem thêm phần thảo luận về vấn đề này trong lỗi 1428672. ) Làm điều gì đó tương tự trong Công cụ dành cho nhà phát triển Chrome sẽ cho bạn một thông báo như 31
Làm cách nào để gọi phương thức từ một lớp khác trong JS?Phương thức call() là một phương thức JavaScript được xác định trước. Nó có thể được sử dụng để gọi (gọi) một phương thức với đối tượng chủ sở hữu làm đối số (tham số). Với call() , một đối tượng có thể sử dụng một phương thức thuộc đối tượng khác.
Bạn có thể gọi một hàm từ một lớp khác không?Kết luận. Trong Java, một phương thức có thể được gọi từ một lớp khác dựa trên công cụ sửa đổi truy cập của nó . Ví dụ: một phương thức được tạo bằng công cụ sửa đổi công khai có thể được gọi từ bên trong cũng như bên ngoài lớp/gói. Phương thức được bảo vệ có thể được gọi từ một lớp khác bằng cách sử dụng tính kế thừa.
Làm cách nào để hiển thị các phương thức hoặc thuộc tính từ lớp này sang lớp khác?Nếu đó là một phương thức tĩnh (không sử dụng bất kỳ dữ liệu thể hiện nào), thì hãy khai báo nó là một phương thức tĩnh và bạn có thể gọi trực tiếp nó . Nếu đó là một phương thức thể hiện, thì thông thường bạn sẽ tạo một đối tượng loại một và sau đó gọi phương thức trên đối tượng đó (thường là trong hàm tạo).
Làm cách nào để gọi phương thức của lớp cha trong JavaScript?nguyên mẫu = new surrogateCtor(); . nguyên mẫu. hàm tạo = phụ; . tên = tên; . nguyên mẫu = { myMethod. hàm (arg) { cái này. tên = arg; |