Trong bài đăng này, tôi sẽ đề cập đến các loại đối tượng JavaScript và cách với tư cách là nhà phát triển, bạn có thể tạo các loại đối tượng khác nhau. Chúng tôi cũng sẽ đề cập đến một số ví dụ về mã khi chúng tôi tiến hành, điều này sẽ giúp bạn hiểu các khái niệm. Bắt đầu nào
JavaScript có 2 loại đối tượng. Tích hợp và do người dùng xác định
- Các đối tượng tích hợp. được cung cấp bởi lõi JavaScript. Những thứ như Mảng, Chuỗi, Số, Boolean, RegExp đều là các đối tượng tích hợp sẵn
- Đối tượng do người dùng định nghĩa. đây là những đối tượng mà bạn đã tạo trong chương trình hoặc ứng dụng của mình
Hãy đi vào một số chi tiết và thử một số ví dụ
Các đối tượng tích hợp JavaScript là gì?
Các đối tượng được xác định trước bằng ngôn ngữ JavaScript. JavaScript là ngôn ngữ lập trình dựa trên đối tượng và bạn sẽ nhận ra rằng mọi thứ trong JavaScript thực sự là một đối tượng. Bản thân nó đang kế thừa từ các đối tượng khác. Ví dụ,
Bạn có thể tạo Mảng JavaScript theo 2 cách,
- Cách thông thường [Array Literal]
var arr = [5]; //literal or short form. this is preferred way arr.length; //1
2. Bằng cách tạo một thể hiện
var arr = new Array[5]; //less preferred arr.length; //5
Nhưng cả hai biến mảng thực sự là đối tượng. Và chúng ta có thể xác minh rằng
typeof arr; //"object" arr instanceOf Object; //true
Cả hai đều có đầy đủ các thuộc tính và phương thức của Array
arr.length;
arr.slice[];
arr.splice[];
arr.pop[];
arr.push[];
arr.filter[];
arr.indexOf[];
//and so on
Tất cả các thuộc tính và phương thức này được định nghĩa bên trong thuộc tính nguyên mẫu của hàm tạo Array. Xin lưu ý ES5 JavaScript không có các lớp
Để dễ hiểu, chúng ta hãy định nghĩa một hàm tạo như một lớp
Arr.prototype = {
length: //,
splice: function[] {},
slice: function[] {},
push: function[] {}
//and so on
}
Bạn cũng sẽ nhận thấy các phương thức như valueOf[], toString[], hasOwnProperty[] có sẵn cho bạn. Đây không phải là các phương thức Array gốc, nhưng chúng đến từ lớp Object/hàm xây dựng. Tôi đã giải thích chi tiết trong phần tiếp theo “ Đối tượng do người dùng định nghĩa “. Nhìn vào đó để hiểu
Tương tự như Mảng, bạn có Chuỗi, Boolean, Số, Hàm, RegExp, Lỗi, v.v. Tất cả các hàm/lớp hàm tạo cấp cao này cung cấp tất cả các phương thức và thuộc tính tiện ích có sẵn cho bạn khi bạn tạo các biến dữ liệu
Một số ví dụ dưới đây,
/* Strings */
var str = "hello";
str.split[]; var str1 = new String["hello"];
str1.split[]; /* Boolean */
var b = true;
var b1 = new Boolean[true]; /* Numbers */
var n = 1.11;
n.toFixed[]; var n1 = new Number[1.11];
n1.toFixed[];
Tất cả các hàm tạo này kế thừa từ lớp cha/hàm tạo đối tượng
Object
----- Array
----- Function
----- Boolean
----- RegExp
----- String
----- Error
Đối tượng do người dùng định nghĩaCác đối tượng mà bạn đã xác định bằng các hàm xây dựng tùy chỉnh. Hãy xem một ví dụ dưới đây,
//you define your constructor function
function Employee[name, id] {
this.name = name;
this.id = id;
} //extend the prototye
Employee.prototype.getName = function[] {
return this.name;
}
Employee.prototype.setID = function[ID] {
this.id = ID;
} //now start creating employee objects
var e1 = new Employee["John", 1234];
var e2 = new Employee["Lenon", 3481];
//and so on //now access the properties from the prototype
e1.getName[]; //"John"
e2.setID[8888];
Vì vậy, các phiên bản hoặc đối tượng e1, e2 của bạn có thể đọc các thuộc tính từ nguyên mẫu của hàm tạo Employee. Đây là một ví dụ về kế thừa nguyên mẫu
Các thuộc tính và phương thức được thêm vào nguyên mẫu của hàm tạo có thể được nhìn thấy bởi các thể hiện được tạo từ hàm tạo
Nhưng nếu bạn để ý, bạn cũng sẽ có một số phương thức và thuộc tính được xác định trước trong đối tượng được tạo tùy chỉnh của mình
________số 8Chúng đến từ đâu? - Chúng đến từ siêu lớp Object/siêu hàm tạo. Mọi đối tượng hoặc hàm tạo mà bạn tạo đều kế thừa từ Đối tượng
Nếu bạn chạy `Employee. prototype` trong bảng điều khiển trình duyệt của bạn, bạn có thể thấy rằng. Bạn sẽ nhận thấy một thuộc tính bán trong suốt có tên là __proto__. Đây là liên kết bí mật đến nguyên mẫu hàm tạo của Employee. nguyên mẫu, đó là Đối tượng. Nhân viên. nguyên mẫu là một đối tượng và do đó kế thừa từ Trình tạo đối tượng
T ip. Không sử dụng __proto__ trong mã của bạn, vì nó không phải là thuộc tính nhất quán và thay đổi từ trình duyệt này sang trình duyệt khác. Luôn sử dụng thuộc tính nguyên mẫu.
Nếu bạn làm một e1. [e1 dot ] trong bảng điều khiển trình duyệt của bạn, bạn sẽ thấy tất cả các thuộc tính và phương thức có sẵn cho đối tượng e1. Hãy xem ảnh chụp màn hình bên dưới
Nói chung, mọi loại đối tượng trong JavaScript, có thể là Được tích hợp sẵn hoặc Do người dùng định nghĩa, tất cả chúng đều kế thừa từ Siêu lớp đối tượng/siêu hàm tạo
JavaScript là ngôn ngữ Hướng đối tượng nhưng dựa trên nguyên mẫu. Bản thân điều này là một chủ đề lớn, và tôi sẽ giữ nó cho một ngày khác