Hãy đi sâu vào các phương pháp khác nhau để tạo các đối tượng trong Javascript i. e Object Literal, các lớp ES6, phương thức khởi tạo, v.v.
Trong Javascript, "Mọi thứ đều là đối tượng". Hmmm🤔…Nhưng điều đó không thực sự chính xác 🤯
Lạ nhỉ?😑
Không phải mọi thứ đều là đối tượng trong Javascript. Vì Javascript có các giá trị và đối tượng nguyên thủy. Giá trị nguyên thủy không phải là đối tượng
Tài liệu MDN. Trong JavaScript, một kiểu nguyên thủy [giá trị nguyên thủy, kiểu dữ liệu nguyên thủy] là dữ liệu không phải là đối tượng và không có phương thức
Sáu kiểu dữ liệu nguyên thủy trong Javascript là 👇
Chuỗi, Số, Bigint, Boolean, không xác định và Biểu tượng
Ngoại trừ 6 giá trị nguyên thủy này, mọi thứ trong Javascript đều là Đối tượng [mảng, hàm, đối tượng, v.v. ]. Các giá trị nguyên thủy là bất biến vì chúng không thể bị thay đổi hoặc sửa đổi trong khi các Đối tượng có thể thay đổi được. e mọi sửa đổi sẽ được phản ánh trong đối tượng ban đầu
let name = "javascript🧐";name.toUpperCase[]; // change name to uppercaseconsole.log[name]; // prints "javascript🧐" because primitives are immutable and can't be altered
let user = { name: "abc" }console.log[user.name] //prints "abc"user.name = "xyz" // change the name property to "xyz"console.log[user.name] // prints "xyz", it shows objects are mutable
Bây giờ Hãy bắt đầu với các phương pháp khác nhau để tạo Đối tượng trong JavaScript 😎
Một đối tượng được biểu diễn dưới dạng tập hợp các cặp khóa-giá trị trong Javascript. Có 5 phương thức tạo đối tượng
- đối tượng chữ
- Sử dụng một từ khóa mới với hàm tạo đối tượng
- Sử dụng một từ khóa mới với hàm tạo
- Vật. phương thức tạo []
- Các lớp học
1️⃣ Đối tượng theo nghĩa đen
Đây là một trong những cách đơn giản và dễ dàng nhất 😀 để tạo một đối tượng
let book = { } // Create an empty Objector let book = { // Object with properties [key: value pairs]
name: "javascript🧐",
published: true
}
Chúng ta có thể tự động thêm các thuộc tính và phương thức vào một đối tượng hiện có bằng cách sử dụng ký hiệu dấu chấm hoặc ký hiệu dấu ngoặc vuông
book.price = 1000; // Dot notationORbook["price"] = 1000; // Bracket notation
Một cách nữa để thêm thuộc tính vào đối tượng là sử dụng phương thức tĩnh Object. định nghĩaProperty[]
SYNTAX 🙅🏼Object.defineProperty[object, propertyName, descriptor]EXAMPLE 🙇🏼♀️let book = {
name: "javascript🧐",
published: true
} ** Add one property at a time using Object.defineProperty[]Object.defineProperty[book, 'price', {
enumerable: true, // value can be enumerated
configurable: false, // value cannot be reconfigured
writable: false, // value cannot be changed
value: '1000'
}];** Add multiple properties at a time using Object.defineProperties[]Object.defineProperties[book, {
price: {
value: 1000,
writable: false
},
edition: {
value: 2
}
}];
Sử dụng đối tượng. định nghĩaProperty[] và đối tượng. defineProperties[], chúng ta có thể đặt các bộ mô tả dữ liệu [có thể đếm được, có thể định cấu hình và có thể ghi] theo yêu cầu của chúng ta
2️⃣ Nhà điều hành 'mới'
Tài liệu MDN. Toán tử
let book = { } // Create an empty Objector let book = { // Object with properties [key: value pairs]0 cho phép các nhà phát triển tạo một thể hiện của loại đối tượng do người dùng xác định hoặc của một trong các loại đối tượng tích hợp có chức năng xây dựng
name: "javascript🧐",
published: true
}
Để tạo các đối tượng với từ khóa new trong Javascript, chúng ta cần một hàm khởi tạo [do người dùng định nghĩa hoặc tích hợp sẵn]. Hãy đi qua cả hai
- Toán tử 'mới' với Trình tạo đối tượng
let book = new Object[]; // Creating empty object with Object constructorbook.name = "javascript🧐"; // Adding properties to objectbook.published = true;
Trên thực tế, cả phương pháp
let book = { } // Create an empty Objector let book = { // Object with properties [key: value pairs]1 và
name: "javascript🧐",
published: true
}
let book = { } // Create an empty Objector let book = { // Object with properties [key: value pairs]2 đều làm điều tương tự 👏i. e đang khởi tạo đối tượng mới. Nhưng phương thức theo nghĩa đen của đối tượng đơn giản và ngắn hơn nhiều
name: "javascript🧐",
published: true
}
2. Toán tử 'new' với hàm Constructor
Hai phương pháp tạo đối tượng trên sẽ tạo một đối tượng tại một thời điểm. Nhưng nếu chúng ta muốn tạo nhiều đối tượng có cùng kiểu dữ liệu thì sao?
Với các cách tiếp cận trên, chúng ta sẽ gặp khó khăn trong việc duy trì các đối tượng khác nhau. Vì vậy, để giải quyết vấn đề này, chúng ta sẽ tạo một hàm xây dựng và sau đó với sự trợ giúp của từ khóa
let book = { } // Create an empty Objector let book = { // Object with properties [key: value pairs]3 theo sau là tên hàm Constructor, chúng ta có thể tạo nhiều đối tượng 🤓
name: "javascript🧐",
published: true
}
function Book[name, published] { // Function
this.name = name;
this.published = published;
this.getName = function[] {
return "Book name is " + this.name;
}
}let js = new Book["javascript", true]; // Constructor function call
let ruby = new Book["Ruby on rails", true];
console.log[js.getName[]]; // prints "Book name is javascript"
Chỉ cần tạo một hàm bình thường với các thuộc tính và phương thức khác nhau bên trong nó. Khi chúng ta gọi hàm đó với từ khóa
let book = { } // Create an empty Objector let book = { // Object with properties [key: value pairs]3 thì nó sẽ đóng vai trò là một
name: "javascript🧐",
published: true
}
let book = { } // Create an empty Objector let book = { // Object with properties [key: value pairs]5 và sẽ trả về đối tượng vừa tạo
name: "javascript🧐",
published: true
}
Chuyện gì đang xảy ra ở trên vậy?🤨
- Tạo một hàm tên là
let book = { } // Create an empty Objector let book = { // Object with properties [key: value pairs]
6 chấp nhận hai tham số
name: "javascript🧐",
published: true
}let book = { } // Create an empty Objector let book = { // Object with properties [key: value pairs]
7 và
name: "javascript🧐",
published: true
}let book = { } // Create an empty Objector let book = { // Object with properties [key: value pairs]
8
name: "javascript🧐",
published: true
} - Từ khóa
let book = { } // Create an empty Objector let book = { // Object with properties [key: value pairs]
9 bên trong hàm
name: "javascript🧐",
published: true
}let book = { } // Create an empty Objector let book = { // Object with properties [key: value pairs]
6 đề cập đến đối tượng trống mới được tạo
name: "javascript🧐",
published: true
} - Thêm thuộc tính
let book = { } // Create an empty Objector let book = { // Object with properties [key: value pairs]
7 và
name: "javascript🧐",
published: true
}let book = { } // Create an empty Objector let book = { // Object with properties [key: value pairs]
8 vào đối tượng mới tạo bằng từ khóa
name: "javascript🧐",
published: true
}let book = { } // Create an empty Objector let book = { // Object with properties [key: value pairs]
9
name: "javascript🧐",
published: true
} - Từ khóa
let book = { } // Create an empty Objector let book = { // Object with properties [key: value pairs]
3 tạo một đối tượng trống và đặt
name: "javascript🧐",
published: true
}let book = { } // Create an empty Objector let book = { // Object with properties [key: value pairs]
9 cho đối tượng mới đó
name: "javascript🧐",
published: true
}
3️⃣ Đối tượng. phương thức tạo []
Phương thức
book.price = 1000; // Dot notationORbook["price"] = 1000; // Bracket notation6 tạo một đối tượng mới và sử dụng một đối tượng hiện có làm nguyên mẫu của đối tượng mới được tạo. Hơi khó hiểu? . Hãy đi qua ví dụ
book.price = 1000; // Dot notationORbook["price"] = 1000; // Bracket notation3
Vật. tạo [] chấp nhận hai tham số
- Đối tượng nguyên mẫu [bắt buộc]. Đối tượng đơn giản sẽ hoạt động như một nguyên mẫu của đối tượng mới được tạo. Đối tượng nguyên mẫu là đối tượng mà từ đó đối tượng mới được tạo sẽ kế thừa tất cả các thuộc tính và phương thức. Đối tượng nguyên mẫu cũng có thể là đối tượng null hoặc rỗng [ {} ]
- thuộc tínhObject [ tùy chọn]. Thêm thuộc tính và phương thức cho đối tượng
book.price = 1000; // Dot notationORbook["price"] = 1000; // Bracket notation4
Khi chúng tôi yêu cầu một số thuộc tính không tồn tại trên
book.price = 1000; // Dot notationORbook["price"] = 1000; // Bracket notation7, nó sẽ xem xét thuộc tính nguyên mẫu của nó và truy cập thuộc tính hoặc phương thức nếu có ở đó
book.price = 1000; // Dot notationORbook["price"] = 1000; // Bracket notation6
Sử dụng đối tượng. create[], chúng ta có thể thêm bộ mô tả thuộc tính vào tên thuộc tính tương ứng. Theo mặc định, các bộ mô tả dữ liệu này là sai. Một trong những ứng dụng của Object. create[] là để đạt được ________ 28 giữa các đối tượng trong Javascript
4️⃣ Lớp học ES6
EcmaScript 6 giới thiệu khái niệm
book.price = 1000; // Dot notationORbook["price"] = 1000; // Bracket notation9 để tạo đối tượng trong Javascript. Nhưng các lớp này không giống như các ngôn ngữ hướng đối tượng khác. Nó chỉ là đường cú pháp đối với sự kế thừa dựa trên nguyên mẫu hiện có của JavaScript