Câu lệnh chức năng không phải là cách duy nhất để xác định một chức năng mới;
Lưu ý - Trình xây dựng là một thuật ngữ từ Lập trình hướng đối tượng. Lần đầu tiên bạn có thể không cảm thấy thoải mái, điều đó không sao cả
cú pháp
Sau đây là cú pháp để tạo một hàm sử dụng hàm tạo Function[] cùng với toán tử new
Hàm tạo Hàm [] mong đợi bất kỳ số lượng đối số chuỗi nào. Đối số cuối cùng là phần thân của hàm – nó có thể chứa các câu lệnh JavaScript tùy ý, được phân tách với nhau bằng dấu chấm phẩy
Lưu ý rằng hàm tạo Function[] không được truyền bất kỳ đối số nào chỉ định tên cho hàm mà nó tạo. Các hàm không tên được tạo bằng hàm tạo Function[] được gọi là các hàm ẩn danh
Bản tóm tắt. trong hướng dẫn này, bạn sẽ tìm hiểu về hàm tạo JavaScript và cách sử dụng từ khóa
2 để tạo một đối tượngCode language: JavaScript [javascript]
let person = new Person['John','Doe'];
Giới thiệu về hàm tạo JavaScript
Trong hướng dẫn về đối tượng JavaScript, bạn đã học cách sử dụng cú pháp ký tự đối tượng để tạo một đối tượng mới
Ví dụ: phần sau tạo một đối tượng người mới với hai thuộc tính
3 vàCode language: JavaScript [javascript]
let person = new Person['John','Doe'];
4Code language: JavaScript [javascript]
let person = new Person['John','Doe'];
Code language: JavaScript [javascript]
let person = { firstName: 'John', lastName: 'Doe' };
Trong thực tế, bạn thường cần tạo nhiều đối tượng giống nhau như đối tượng
5Code language: JavaScript [javascript]
let person = new Person['John','Doe'];
Để làm điều đó, bạn có thể sử dụng hàm tạo để xác định loại tùy chỉnh và toán tử
2 để tạo nhiều đối tượng từ loại nàyCode language: JavaScript [javascript]
let person = new Person['John','Doe'];
Về mặt kỹ thuật, một hàm tạo là một hàm thông thường với quy ước sau
- Tên của hàm tạo bắt đầu bằng chữ in hoa như
7,
Code language: JavaScript [javascript]let person = new Person['John','Doe'];
8, v.v.
Code language: JavaScript [javascript]let person = new Person['John','Doe'];
- Hàm xây dựng chỉ nên được gọi với toán tử
2
Code language: JavaScript [javascript]let person = new Person['John','Doe'];
Lưu ý rằng ES6 giới thiệu từ khóa
00 cho phép bạn xác định loại tùy chỉnh. Và các lớp chỉ là đường cú pháp trên các hàm tạo với một số cải tiếnCode language: JavaScript [javascript]
let person = new Person['John','Doe'];
Ví dụ sau định nghĩa một hàm tạo có tên là
7Code language: JavaScript [javascript]
let person = new Person['John','Doe'];
2Code language: JavaScript [javascript]
let person = new Person['John','Doe'];
Trong ví dụ này,
7 giống như một hàm thông thường ngoại trừ tên của nó bắt đầu bằng chữ in hoaCode language: JavaScript [javascript]
let person = new Person['John','Doe'];
03Code language: JavaScript [javascript]
let person = new Person['John','Doe'];
Để tạo một phiên bản mới của
7, bạn sử dụng toán tử
let person = new Person['John','Doe'];
Code language: JavaScript [javascript]
2Code language: JavaScript [javascript]
let person = new Person['John','Doe'];
Code language: JavaScript [javascript]
let person = new Person['John','Doe'];
Về cơ bản, toán tử
2 thực hiện như sauCode language: JavaScript [javascript]
let person = new Person['John','Doe'];
- Tạo một đối tượng trống mới và gán nó cho biến
07
Code language: JavaScript [javascript]let person = new Person['John','Doe'];
- Gán các đối số
08 và
Code language: JavaScript [javascript]let person = new Person['John','Doe'];
09 cho các thuộc tính
Code language: JavaScript [javascript]let person = new Person['John','Doe'];
3 và
Code language: JavaScript [javascript]let person = new Person['John','Doe'];
4 của đối tượng
Code language: JavaScript [javascript]let person = new Person['John','Doe'];
- Trả về giá trị
07
Code language: JavaScript [javascript]let person = new Person['John','Doe'];
Nó có chức năng tương đương như sau
0Code language: JavaScript [javascript]
let person = new Person['John','Doe'];
Do đó, tuyên bố sau đây
Code language: JavaScript [javascript]
let person = new Person['John','Doe'];
… trả về kết quả tương tự như câu lệnh sau
Code language: JavaScript [javascript]
let person = { firstName: 'John', lastName: 'Doe' };
Tuy nhiên, hàm tạo
7 cho phép bạn tạo nhiều đối tượng giống nhau. Ví dụCode language: JavaScript [javascript]
let person = new Person['John','Doe'];
9Code language: JavaScript [javascript]
let person = new Person['John','Doe'];
Thêm phương thức vào hàm tạo JavaScript
Một đối tượng có thể có các phương thức thao tác dữ liệu của nó. Để thêm một phương thức vào một đối tượng được tạo thông qua hàm tạo, bạn có thể sử dụng từ khóa
07. Ví dụCode language: JavaScript [javascript]
let person = new Person['John','Doe'];
1Code language: JavaScript [javascript]
let person = new Person['John','Doe'];
Bây giờ, bạn có thể tạo một đối tượng
7 mới và gọi phương thứcCode language: JavaScript [javascript]
let person = new Person['John','Doe'];
6Code language: JavaScript [javascript]
let person = new Person['John','Doe'];
4Code language: JavaScript [javascript]
let person = new Person['John','Doe'];
đầu ra
5
let person = new Person['John','Doe'];
Code language: JavaScript [javascript]
Vấn đề với hàm tạo là khi bạn tạo nhiều phiên bản của
7, thìCode language: JavaScript [javascript]
let person = new Person['John','Doe'];
8 sẽ bị trùng lặp trong mọi phiên bản, điều này không hiệu quả về bộ nhớCode language: JavaScript [javascript]
let person = new Person['John','Doe'];
Để giải quyết vấn đề này, bạn có thể sử dụng nguyên mẫu để tất cả các phiên bản của loại tùy chỉnh có thể chia sẻ cùng một phương thức
Trả về từ hàm tạo
Thông thường, hàm tạo hoàn toàn trả về
07 được đặt cho đối tượng mới được tạo. Nhưng nếu nó có câu lệnhCode language: JavaScript [javascript]
let person = new Person['John','Doe'];
0, thì đây là các quy tắcCode language: JavaScript [javascript]
let person = { firstName: 'John', lastName: 'Doe' };
- Nếu
0 được gọi với một đối tượng, hàm tạo sẽ trả về đối tượng đó thay vì
Code language: JavaScript [javascript]let person = { firstName: 'John', lastName: 'Doe' };
07
Code language: JavaScript [javascript]let person = new Person['John','Doe'];
- Nếu
0 được gọi với một giá trị không phải là một đối tượng, nó sẽ bị bỏ qua
Code language: JavaScript [javascript]let person = { firstName: 'John', lastName: 'Doe' };
Gọi một hàm xây dựng không có từ khóa let person = new Person['John','Doe'];
Code language: JavaScript [javascript]
2
let person = new Person['John','Doe'];
Về mặt kỹ thuật, bạn có thể gọi một hàm tạo giống như một hàm thông thường mà không cần sử dụng từ khóa
2 như thế nàyCode language: JavaScript [javascript]
let person = new Person['John','Doe'];
20Code language: JavaScript [javascript]
let person = new Person['John','Doe'];
Trong trường hợp này,
7 chỉ thực thi như một chức năng thông thường. Do đó,Code language: JavaScript [javascript]
let person = new Person['John','Doe'];
07 bên trong hàmCode language: JavaScript [javascript]
let person = new Person['John','Doe'];
7 không liên kết với biếnCode language: JavaScript [javascript]
let person = new Person['John','Doe'];
5 mà là đối tượng toàn cầuCode language: JavaScript [javascript]
let person = new Person['John','Doe'];
Nếu bạn cố truy cập thuộc tính
3 hoặcCode language: JavaScript [javascript]
let person = new Person['John','Doe'];
4, bạn sẽ gặp lỗiCode language: JavaScript [javascript]
let person = new Person['John','Doe'];
21Code language: JavaScript [javascript]
let person = new Person['John','Doe'];
Lỗi
22Code language: JavaScript [javascript]
let person = new Person['John','Doe'];
Tương tự, bạn không thể truy cập phương thức
6 vì nó bị ràng buộc với đối tượng toàn cầuCode language: JavaScript [javascript]
let person = new Person['John','Doe'];
23Code language: JavaScript [javascript]
let person = new Person['John','Doe'];
Lỗi
24Code language: JavaScript [javascript]
let person = new Person['John','Doe'];
Để ngăn hàm tạo được gọi mà không có từ khóa
2, ES6 đã giới thiệu thuộc tínhCode language: JavaScript [javascript]
let person = new Person['John','Doe'];
94Code language: JavaScript [javascript]
let person = new Person['John','Doe'];
Nếu một hàm xây dựng được gọi với từ khóa
2, thìCode language: JavaScript [javascript]
let person = new Person['John','Doe'];
96 trả về một tham chiếu của hàm. Nếu không, nó sẽ trả vềCode language: JavaScript [javascript]
let person = new Person['John','Doe'];
97Code language: JavaScript [javascript]
let person = new Person['John','Doe'];
Phần sau đây thêm một câu lệnh bên trong hàm
7 để hiển thịCode language: JavaScript [javascript]
let person = new Person['John','Doe'];
96 cho bảng điều khiểnCode language: JavaScript [javascript]
let person = new Person['John','Doe'];
25Code language: JavaScript [javascript]
let person = new Person['John','Doe'];
Hàm sau trả về
97 vì hàm tạoCode language: JavaScript [javascript]
let person = new Person['John','Doe'];
7 được gọi như một hàm thông thườngCode language: JavaScript [javascript]
let person = new Person['John','Doe'];
26Code language: JavaScript [javascript]
let person = new Person['John','Doe'];
đầu ra
27Code language: JavaScript [javascript]
let person = new Person['John','Doe'];
Tuy nhiên, phần sau đây trả về một tham chiếu đến hàm
7 vì nó được gọi với từ khóaCode language: JavaScript [javascript]
let person = new Person['John','Doe'];
2Code language: JavaScript [javascript]
let person = new Person['John','Doe'];
28Code language: JavaScript [javascript]
let person = new Person['John','Doe'];
đầu ra
29Code language: JavaScript [javascript]
let person = new Person['John','Doe'];
Bằng cách sử dụng
96, bạn có thể buộc người gọi hàm tạo sử dụng từ khóaCode language: JavaScript [javascript]
let person = new Person['John','Doe'];
2. Nếu không, bạn có thể đưa ra một lỗi như thế nàyCode language: JavaScript [javascript]
let person = new Person['John','Doe'];
0Code language: JavaScript [javascript]
let person = new Person['John','Doe'];
Ngoài ra, bạn có thể làm cho cú pháp linh hoạt hơn bằng cách tạo một đối tượng
7 mới nếu người dùng hàm tạo không sử dụng từ khóaCode language: JavaScript [javascript]
let person = new Person['John','Doe'];
2Code language: JavaScript [javascript]
let person = new Person['John','Doe'];