Tôi có thể có nhiều hàm tạo trong JavaScript không?
Nếu bạn có nền tảng C#, bạn có thể muốn thêm nhiều hàm tạo vào một lớp TypeScript. Mặc dù TypeScript không hỗ trợ nhiều hàm tạo nhưng bạn vẫn có thể đạt được hành vi tương tự Show
Trong TypeScript, bạn có thể thực hiện hành vi tương tự như việc thêm nhiều hàm tạo bằng cách
Bài viết này giải thích các giải pháp đó với các ví dụ về mã Bắt tay vào làm nào 😎 Trong TypeScript, không giống như các ngôn ngữ khác, bạn không thể định nghĩa nhiều hàm tạo bên trong một lớp. Tuy nhiên, bạn có thể đạt được hành vi tương tự bằng cách sử dụng một trong các phương pháp thay thế đó Làm cách nào để triển khai quá tải hàm tạo?Một cách để mô phỏng việc thêm nhiều hàm tạo bao gồm
Đây là một ví dụ typescript Như bạn có thể thấy, trong ví dụ này, chúng ta khai báo quá tải một hàm tạo và làm cho việc triển khai hàm tạo tương thích với nó Và đây là một ví dụ phức tạp hơn với ba lần quá tải hàm tạo typescript Như bạn có thể thấy, việc sử dụng quá tải hàm tạo trong TypeScript có thể nhanh chóng trở nên khó quản lý và khó hiểu. Đó là lý do tại sao tôi thích phương pháp sau tốt hơn Làm cách nào để sử dụng phương thức xuất xưởng để xây dựng một lớp?Phương thức xuất xưởng để mô phỏng nhiều hàm tạo đơn giản hơn nhiều trong TypeScript. Nó liên quan đến việc thêm các hàm tĩnh của nhà máy vào lớp sẽ khởi tạo nó bằng các đối số chính xác Đây là một ví dụ typescript Trong ví dụ này, thay vì thêm quá tải hàm tạo, chúng tôi thêm hai hàm tĩnh của nhà máy để điền vào một thể hiện lớp mới với các đối số chính xác và trả về nó Phương pháp này đơn giản hơn nhiều để hiểu và duy trì Làm cách nào để thêm một phần đối số lớp vào hàm tạo?Cuối cùng, bạn có thể chuyển một phần lớp làm đối số của hàm tạo. Bằng cách đó, bạn có thể chuyển bất kỳ đối số nào bạn muốn cho lớp Đây là một ví dụ typescript Như bạn có thể thấy, chúng ta có thể truyền bất kỳ đối số nào do lớp định nghĩa cho hàm tạo Nhược điểm của phương pháp này là vì bạn có thể truyền bất kỳ đối số nào bạn muốn, nên bạn có thể bỏ qua tham số bắt buộc Phương thức 2 là một phương thức đặc biệt của một lớp để tạo và khởi tạo một thể hiện đối tượng của lớp đóGhi chú. Trang này giới thiệu cú pháp 2. Đối với thuộc tính 2 có trên tất cả các đối tượng, xem 5________số 8 Hàm tạo cho phép bạn cung cấp bất kỳ khởi tạo tùy chỉnh nào phải được thực hiện trước bất kỳ phương thức nào khác có thể được gọi trên một đối tượng được khởi tạo
Nếu bạn không cung cấp hàm tạo của riêng mình, thì hàm tạo mặc định sẽ được cung cấp cho bạn. Nếu lớp của bạn là lớp cơ sở, hàm tạo mặc định trống typescript 0Nếu lớp của bạn là lớp dẫn xuất, hàm tạo mặc định sẽ gọi hàm tạo cha, truyền theo bất kỳ đối số nào được cung cấp typescript 1Ghi chú. Sự khác biệt giữa hàm tạo rõ ràng như hàm tạo ở trên và hàm tạo mặc định là hàm tạo mặc định không thực sự gọi trình lặp mảng thông qua trải rộng đối số Điều đó cho phép mã như thế này hoạt động typescript 2Lớp 6 không cần hàm tạo rõ ràng, vì nó không cần thực hiện bất kỳ khởi tạo tùy chỉnh nào. Hàm tạo mặc định sau đó đảm nhận việc khởi tạo biến cha mẹ 7 từ đối số mà nó được đưa raTuy nhiên, nếu bạn cung cấp hàm tạo của riêng mình và lớp của bạn bắt nguồn từ một số lớp cha, thì bạn phải gọi rõ ràng hàm tạo của lớp cha bằng cách sử dụng 8. Ví dụtypescript 6Sử dụng 9 trên một lớp trải qua các bước sau
Trong phần thân của 2, bạn có thể truy cập đối tượng được tạo thông qua typescript 02 và truy cập lớp được gọi bằng 9 đến typescript 09. Lưu ý rằng các phương thức (bao gồm getters và setters) và chuỗi nguyên mẫu đã được khởi tạo trên typescript 02 trước khi 2 được thực thi, vì vậy bạn thậm chí có thể truy cập các phương thức của lớp con từ hàm tạo của lớp cha. Tuy nhiên, nếu những phương thức đó sử dụng typescript 02, thì typescript 02 sẽ chưa được khởi tạo hoàn toàn. Điều này có nghĩa là việc đọc các trường công khai của lớp dẫn xuất sẽ cho kết quả là typescript 14, trong khi việc đọc các trường riêng tư sẽ cho kết quả là typescript 15typescript 4Phương thức 2 có thể có giá trị trả về. Trong khi lớp cơ sở có thể trả về bất kỳ thứ gì từ hàm tạo của nó, thì lớp dẫn xuất phải trả về một đối tượng hoặc typescript 14, nếu không một typescript 15 sẽ bị ném ratypescript 8Nếu hàm tạo của lớp cha trả về một đối tượng, thì đối tượng đó sẽ được sử dụng làm giá trị typescript 02 trên đó các trường lớp của lớp dẫn xuất sẽ được xác định. Thủ thuật này được gọi là , cho phép các trường của lớp dẫn xuất (bao gồm cả trường riêng) được xác định trên các đối tượng không liên quanChỉ có thể có một phương thức đặc biệt với tên 2 trong một lớp. Có nhiều hơn một lần xuất hiện phương thức 2 trong một lớp sẽ gây ra lỗi typescript 22. Có một getter hoặc setter được gọi là 2 cũng là một typescript 22 2 tuân theo cú pháp phương thức bình thường, vì vậy các giá trị mặc định của tham số, tham số còn lại, v.v. tất cả đều có thể được sử dụng 6Hàm tạo phải là một tên theo nghĩa đen. Thuộc tính được tính toán không thể trở thành hàm tạo 7Đoạn mã này được lấy từ mẫu lớp (bản demo trực tiếp) 0 8 gọi hàm tạo là nguyên mẫu của lớp hiện tại. Nếu bạn thay đổi nguyên mẫu của chính lớp hiện tại, 8 sẽ gọi hàm tạo của nguyên mẫu mới. Việc thay đổi nguyên mẫu của thuộc tính typescript 28 của lớp hiện tại không ảnh hưởng đến lệnh gọi hàm tạo nào của 8
Tôi có thể có 2 hàm tạo không?Kỹ thuật có hai (hoặc nhiều) hàm tạo trong một lớp được gọi là nạp chồng hàm tạo. Một lớp có thể có nhiều hàm tạo khác nhau về số lượng và/hoặc loại tham số của chúng. Tuy nhiên, không thể có hai hàm tạo có cùng tham số chính xác .
Bạn có thể có 3 hàm tạo trong Java không?Nạp chồng hàm tạo - Nhiều hàm tạo cho một lớp Java. Một lớp có thể có nhiều hàm tạo, miễn là chữ ký của chúng (các tham số chúng nhận) không giống nhau . Bạn có thể xác định bao nhiêu hàm tạo tùy thích.
Bạn có thể có nhiều hàm tạo có cùng tên không?Trong C++, Chúng ta có thể có nhiều hàm tạo trong một lớp có cùng tên, miễn là mỗi hàm có một danh sách đối số khác nhau . Khái niệm này được gọi là Quá tải cấu trúc và khá giống với nạp chồng hàm.
Tôi có thể có hai hàm tạo trong TypeScript không?Định nghĩa của nhiều trình xây dựng TypeScript. Trong TypeScript, ta không thể định nghĩa nhiều hàm tạo như các ngôn ngữ lập trình khác vì nó không hỗ trợ nhiều hàm tạo. |