Từ khóa “this” trong Java được sử dụng như một tham chiếu đến đối tượng hiện tại, với một phương thức thể hiện hoặc một hàm tạo. Sử dụng điều này, bạn có thể giới thiệu các thành viên của một lớp như hàm tạo, biến và phương thức
Gọi một phương thức sử dụng từ khóa này từ một hàm tạo
Có, như đã đề cập, chúng ta có thể gọi tất cả các thành viên của một lớp [phương thức, biến và hàm tạo] từ các phương thức thể hiện hoặc, hàm tạo
Ví dụ
Trong chương trình Java sau, lớp Sinh viên chứa hai biến riêng name và age với các phương thức setter và một hàm tạo được tham số hóa chấp nhận hai giá trị này
Từ hàm tạo, chúng tôi đang gọi các phương thức setName[] và setAge[] bằng cách sử dụng từ khóa "this" bằng cách chuyển các giá trị tên và tuổi thu được cho chúng tương ứng
Từ phương thức chính, chúng tôi đang đọc các giá trị tên và tuổi từ người dùng và gọi hàm tạo bằng cách chuyển chúng. Sau đó, chúng tôi đang hiển thị các giá trị của tên và lớp của các biến thể hiện bằng cách sử dụng phương thức display[]
Cú pháp
function User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
0 thông thường cho phép chúng ta tạo một đối tượng. Nhưng thường thì chúng ta cần tạo nhiều đối tượng tương tự, như nhiều người dùng hoặc mục menu, v.v.Điều đó có thể được thực hiện bằng cách sử dụng hàm tạo và toán tử
function User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
1Hàm xây dựng
Các hàm xây dựng về mặt kỹ thuật là các hàm thông thường. Có hai quy ước mặc dù
- Họ được đặt tên với chữ in hoa đầu tiên
- Chúng chỉ nên được thực thi với toán tử
1function User[name] { // this = {}; [implicitly] // add properties to this this.name = name; this.isAdmin = false; // return this; [implicitly] }
Ví dụ
function User[name] {
this.name = name;
this.isAdmin = false;
}
let user = new User["Jack"];
alert[user.name]; // Jack
alert[user.isAdmin]; // false
Khi một hàm được thực thi với
function User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
3, nó sẽ thực hiện các bước sau- Một đối tượng trống mới được tạo và gán cho
4function User[name] { // this = {}; [implicitly] // add properties to this this.name = name; this.isAdmin = false; // return this; [implicitly] }
- Thân hàm thực thi. Thông thường, nó sửa đổi
4, thêm thuộc tính mới cho nófunction User[name] { // this = {}; [implicitly] // add properties to this this.name = name; this.isAdmin = false; // return this; [implicitly] }
- Giá trị của
4 được trả vềfunction User[name] { // this = {}; [implicitly] // add properties to this this.name = name; this.isAdmin = false; // return this; [implicitly] }
Nói cách khác,
function User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
7 làm điều gì đó giống nhưfunction User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
Vì vậy,
function User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
8 cho kết quả tương tự nhưfunction User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
1Bây giờ nếu chúng tôi muốn tạo những người dùng khác, chúng tôi có thể gọi
function User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
9, function User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
10, v.v. Ngắn hơn nhiều so với sử dụng chữ mỗi lần và cũng dễ đọcĐó là mục đích chính của các nhà xây dựng - để triển khai mã tạo đối tượng có thể tái sử dụng
Hãy lưu ý một lần nữa – về mặt kỹ thuật, bất kỳ hàm nào [ngoại trừ hàm mũi tên, vì chúng không có
function User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
4] đều có thể được sử dụng làm hàm tạo. Nó có thể chạy với function User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
3 và nó sẽ thực hiện thuật toán trên. “Chữ in hoa đầu tiên” là một thỏa thuận phổ biến, để làm rõ rằng một chức năng sẽ được chạy với function User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
3hàm mới[] { … }
Nếu chúng ta có nhiều dòng mã về việc tạo một đối tượng phức tạp duy nhất, chúng ta có thể gói chúng trong một hàm xây dựng được gọi ngay lập tức, như thế này
function User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
7Hàm tạo này không thể được gọi lại vì nó không được lưu ở bất kỳ đâu, chỉ được tạo và gọi. Vì vậy, thủ thuật này nhằm mục đích đóng gói mã xây dựng một đối tượng mà không sử dụng lại trong tương lai
Kiểm tra chế độ xây dựng. Mới. Mục tiêu
Nội dung nâng cao
Cú pháp từ phần này hiếm khi được sử dụng, hãy bỏ qua trừ khi bạn muốn biết mọi thứ
Bên trong một hàm, chúng ta có thể kiểm tra xem nó có được gọi với
function User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
3 hay không, bằng cách sử dụng thuộc tính đặc biệt function User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
15Nó không được xác định cho các cuộc gọi thông thường và bằng chức năng nếu được gọi bằng
function User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
3function User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
1Điều đó có thể được sử dụng bên trong hàm để biết liệu nó được gọi với
function User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
3, “ở chế độ hàm tạo” hay không có nó, “ở chế độ thông thường”Chúng tôi cũng có thể thực hiện cả cuộc gọi
function User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
3 và thông thường để làm điều tương tự, như thế nàyfunction User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
4Cách tiếp cận này đôi khi được sử dụng trong các thư viện để làm cho cú pháp linh hoạt hơn. Để mọi người có thể gọi hàm có hoặc không có
function User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
3, và nó vẫn hoạt độngTuy nhiên, có lẽ không phải là một điều tốt để sử dụng ở mọi nơi, bởi vì việc bỏ qua
function User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
3 làm cho nó ít rõ ràng hơn về những gì đang diễn ra. Với function User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
3, tất cả chúng ta đều biết rằng đối tượng mới đang được tạoTrả về từ các nhà xây dựng
Thông thường, các hàm tạo không có câu lệnh
function User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
72. Nhiệm vụ của họ là viết tất cả những thứ cần thiết vào function User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
4, và nó tự động trở thành kết quảNhưng nếu có một câu lệnh
function User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
72, thì quy tắc rất đơn giản- Nếu
72 được gọi với một đối tượng, thì đối tượng đó sẽ được trả về thay vìfunction User[name] { // this = {}; [implicitly] // add properties to this this.name = name; this.isAdmin = false; // return this; [implicitly] }
4function User[name] { // this = {}; [implicitly] // add properties to this this.name = name; this.isAdmin = false; // return this; [implicitly] }
- Nếu
72 được gọi với số nguyên thủy, nó sẽ bị bỏ quafunction User[name] { // this = {}; [implicitly] // add properties to this this.name = name; this.isAdmin = false; // return this; [implicitly] }
Nói cách khác,
function User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
72 với một đối tượng trả về đối tượng đó, trong tất cả các trường hợp khác, function User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
4 được trả vềChẳng hạn, ở đây
function User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
72 ghi đè function User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
4 bằng cách trả về một đối tượngfunction User[name] {
this.name = name;
this.isAdmin = false;
}
let user = new User["Jack"];
alert[user.name]; // Jack
alert[user.isAdmin]; // false
8Và đây là một ví dụ với một
function User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
72 trống [hoặc chúng ta có thể đặt một số nguyên thủy sau nó, không thành vấn đề]function User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
0Thông thường các hàm tạo không có câu lệnh
function User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
72. Ở đây chúng tôi đề cập đến hành vi đặc biệt với các đối tượng trả về chủ yếu vì mục đích hoàn thiệnBỏ qua dấu ngoặc đơn
Nhân tiện, chúng ta có thể bỏ dấu ngoặc đơn sau
function User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
3function User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
3Bỏ qua dấu ngoặc đơn ở đây không được coi là "phong cách tốt", nhưng cú pháp được cho phép theo đặc điểm kỹ thuật
Các phương thức trong constructor
Sử dụng các hàm xây dựng để tạo các đối tượng mang lại rất nhiều tính linh hoạt. Hàm xây dựng có thể có các tham số xác định cách xây dựng đối tượng và những gì cần đặt trong đó
Tất nhiên, chúng ta có thể thêm vào
function User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
4 không chỉ các thuộc tính mà cả các phương thứcChẳng hạn,
function User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
16 bên dưới tạo một đối tượng với function User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
17 đã cho và phương thức function User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
18function User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
8Để tạo các đối tượng phức tạp, có một cú pháp nâng cao hơn, các lớp, mà chúng ta sẽ đề cập sau
Tóm lược
- Các hàm xây dựng hay ngắn gọn là các hàm tạo là các hàm thông thường, nhưng có một thỏa thuận chung là đặt tên chúng bằng chữ in hoa trước
- Hàm xây dựng chỉ nên được gọi bằng cách sử dụng
3. Một cuộc gọi như vậy ngụ ý tạo mộtfunction User[name] { // this = {}; [implicitly] // add properties to this this.name = name; this.isAdmin = false; // return this; [implicitly] }
4 trống ở đầu và trả về một cái đã điền ở cuốifunction User[name] { // this = {}; [implicitly] // add properties to this this.name = name; this.isAdmin = false; // return this; [implicitly] }
Chúng ta có thể sử dụng các hàm tạo để tạo nhiều đối tượng giống nhau
JavaScript cung cấp các hàm tạo cho nhiều đối tượng ngôn ngữ tích hợp. như
function User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
41 cho ngày tháng, function User[name] {
// this = {}; [implicitly]
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; [implicitly]
}
42 cho bộ và những thứ khác mà chúng tôi dự định nghiên cứuĐối tượng, chúng tôi sẽ trở lại
Trong chương này chúng ta chỉ trình bày những kiến thức cơ bản về đối tượng và hàm tạo. Chúng rất cần thiết để tìm hiểu thêm về các kiểu dữ liệu và chức năng trong các chương tiếp theo
Sau khi biết điều đó, chúng ta quay lại các đối tượng và tìm hiểu sâu hơn về chúng trong các chương Nguyên mẫu, kế thừa và Lớp