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ựngCá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ử
function User(name) {
// this = {}; (implicitly)
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; (implicitly)
} 1
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
function User(name) {
// this = {}; (implicitly)
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; (implicitly)
} 4 - Thân hàm thực thi. Thông thường, nó sửa đổi
function User(name) {
// this = {}; (implicitly)
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; (implicitly)
} 4, thêm thuộc tính mới cho nó - Giá trị của
function User(name) {
// this = {}; (implicitly)
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; (implicitly)
} 4 được trả về
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êuNộ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ựngThô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
function User(name) {
// this = {}; (implicitly)
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; (implicitly)
} 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)
} 4 - Nếu
function User(name) {
// this = {}; (implicitly)
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; (implicitly)
} 72 được gọi với số nguyên thủy, nó sẽ bị bỏ qua
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 constructorSử 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 Bản tóm tắt- 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
function User(name) {
// this = {}; (implicitly)
// add properties to this
this.name = name;
this.isAdmin = false;
// return this; (implicitly)
} 3. Một cuộc gọi như vậy ngụ ý tạo một function 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ối
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
Điều gì xảy ra nếu bạn không sử dụng new trong JavaScript?
Sử dụng từ khóa mới KHÔNG phải là 'xấu'. Nhưng nếu bạn quên, bạn sẽ gọi hàm tạo đối tượng như một hàm thông thường . Nếu hàm tạo của bạn không kiểm tra ngữ cảnh thực thi của nó thì nó sẽ không nhận thấy rằng 'cái này' trỏ đến đối tượng khác (thường là đối tượng toàn cục) thay vì đối tượng mới.
Từ khóa mới có cần thiết trong JavaScript không?
Từ khóa mới trong JavaScript được sử dụng để tạo một thể hiện của đối tượng có hàm tạo . Khi gọi hàm tạo bằng toán tử 'mới', các hành động sau được thực hiện. Một đối tượng trống mới được tạo.
Mục đích của từ khóa mới là gì?
new là một từ khóa Java. Nó tạo một đối tượng Java và cấp phát bộ nhớ cho nó trên heap . new cũng được sử dụng để tạo mảng, vì mảng cũng là đối tượng.
Có gì mới trong JavaScript?
Các tính năng mới trong ECMAScript 2022 bao gồm chờ đợi cấp cao nhất, chỉ số đối sánh RegExp, trường lớp công khai và riêng tư mới , v.v. Bắt đầu nào. ECMAScript 2022 (ES13) ra mắt vào ngày 22 tháng 6, mã hóa loạt tính năng mới nhất cho JavaScript. |