Tên thuộc tính có thể là tên thuộc tính hoặc tên quan hệ. Đối với tên thuộc tính, kết quả trả về là
let cake = '🍰';
// ❌ Old way requires 2 steps
let pan = {
id: 1,
};
pan[cake] = '🥞';
// ✅ YAY, much easier with ES6
let pan = {
id: 1,
[cake]: '🥞',
};
01; . Nếu một thuộc tính và một mối quan hệ có cùng tên, thì thuộc tính được trả về. Ví dụ: một thực thể Tài khoản có cả thuộc tính chủ sở hữu và mối quan hệ chủ sở hữuVí dụ: khi thao tác trên một tài khoản, thuộc tính ID người dùng có thể trả về một Chuỗi, trong đó thuộc tính chủ sở hữu có thể trả về một thực thể khác [let cake = '🍰';
// ❌ Old way requires 2 steps
let pan = {
id: 1,
};
pan[cake] = '🥞';
// ✅ YAY, much easier with ES6
let pan = {
id: 1,
[cake]: '🥞',
};
03]. Thực thể chủ sở hữu sau đó có thể được vận hành với thành viên let cake = '🍰';
// ❌ Old way requires 2 steps
let pan = {
id: 1,
};
pan[cake] = '🥞';
// ✅ YAY, much easier with ES6
let pan = {
id: 1,
[cake]: '🥞',
};
04 để lấy thông tin về nó. userids = directoryObject.getProperty["eruid"];
if [userids.length > 0]
userid = userids[0];
owner = directoryObject.getProperty["owner"];
if [owner.length > 0]
ownerName = owner.getProperty["name"][0];
Ghi chú. Các câu lệnh này giả sử có ít nhất một giá trị được trả về. Nếu không có giá trị nào được trả về, sẽ xảy ra vi phạm lập chỉ mục mảng.
Phương thức
let cake = '🍰';
// ❌ Old way requires 2 steps
let pan = {
id: 1,
};
pan[cake] = '🥞';
// ✅ YAY, much easier with ES6
let pan = {
id: 1,
[cake]: '🥞',
};
05 trả về một mảng đối tượng Java™ được lưu trữ trong đối tượng JavaScript let cake = '🍰';
// ❌ Old way requires 2 steps
let pan = {
id: 1,
};
pan[cake] = '🥞';
// ✅ YAY, much easier with ES6
let pan = {
id: 1,
[cake]: '🥞',
};
06. Không giống như một mảng JavaScript tiêu chuẩn, các đối tượng let cake = '🍰';
// ❌ Old way requires 2 steps
let pan = {
id: 1,
};
pan[cake] = '🥞';
// ✅ YAY, much easier with ES6
let pan = {
id: 1,
[cake]: '🥞',
};
06 được sử dụng để truy cập các thành viên của một mảng Java. Vì các mảng Java không thể thay đổi kích thước nên không thể thay đổi kích thước của đối tượng let cake = '🍰';
// ❌ Old way requires 2 steps
let pan = {
id: 1,
};
pan[cake] = '🥞';
// ✅ YAY, much easier with ES6
let pan = {
id: 1,
[cake]: '🥞',
};
06. Ngoài ra, các đối tượng let cake = '🍰';
// ❌ Old way requires 2 steps
let pan = {
id: 1,
};
pan[cake] = '🥞';
// ✅ YAY, much easier with ES6
let pan = {
id: 1,
[cake]: '🥞',
};
06 được nhập. Đặt sai loại phần tử let cake = '🍰';
// ❌ Old way requires 2 steps
let pan = {
id: 1,
};
pan[cake] = '🥞';
// ✅ YAY, much easier with ES6
let pan = {
id: 1,
[cake]: '🥞',
};
06 sẽ gây ra lỗi JavaScript Trước đây, chúng ta phải thực hiện 2 bước - tạo đối tượng theo nghĩa đen và sau đó sử dụng ký hiệu ngoặc. Với ES6, giờ đây bạn có thể trực tiếp sử dụng một biến làm khóa thuộc tính trong đối tượng của mình. CÓ. 👏
let cake = '🍰';
// ❌ Old way requires 2 steps
let pan = {
id: 1,
};
pan[cake] = '🥞';
// ✅ YAY, much easier with ES6
let pan = {
id: 1,
[cake]: '🥞',
};
- 3 cách để truy cập giá trị đối tượng
- Cách truy cập giá trị đối tượng bằng các phím biểu tượng cảm xúc
- Tài nguyên
# 3 cách để truy cập giá trị đối tượng
Chúng ta có thể xuất giá trị đối tượng bằng cách chuyển vào khóa thích hợp. Vì tôi đã sử dụng biểu tượng cảm xúc làm chìa khóa trong ví dụ của mình nên hơi phức tạp một chút. Vì vậy, hãy xem một ví dụ dễ dàng hơn
let me = {
name: 'samantha',
};
// 1. Dot notation
me.name; // samantha
// 2. Bracket notation [string key]
me['name']; // samantha
// 3. Bracket notation [variable key]
let key = 'name';
me[key]; // samantha
# Cách truy cập giá trị đối tượng bằng các phím biểu tượng cảm xúc
Được rồi quay lại ví dụ biểu tượng cảm xúc của chúng tôi. Chúng ta hãy nhìn vào đầu ra
let cake = '🍰';
let pan = {
[cake]: '🥞',
};
// Output -> { '🍰': '🥞' }
Rất tiếc, khi bạn đang sử dụng Biểu tượng cảm xúc làm phím, bạn sẽ không thể sử dụng ký hiệu dấu chấm. Bạn bị giới hạn trong Ký hiệu khung
Bằng cách này, chúng ta có thể thông báo cho TypeScript rằng biến
let cake = '🍰';
// ❌ Old way requires 2 steps
let pan = {
id: 1,
};
pan[cake] = '🥞';
// ✅ YAY, much easier with ES6
let pan = {
id: 1,
[cake]: '🥞',
};
11 sẽ chỉ lưu trữ một chuỗi bằng với một trong các khóa trong đối tượngBây giờ chúng ta có thể truy cập thuộc tính đối tượng một cách linh hoạt
Điều này là cần thiết vì TypeScript không phải lúc nào cũng có thể xác định loại chuỗi càng hẹp càng tốt
Loại
let cake = '🍰';
// ❌ Old way requires 2 steps
let pan = {
id: 1,
};
pan[cake] = '🥞';
// ✅ YAY, much easier with ES6
let pan = {
id: 1,
[cake]: '🥞',
};
11 là một chuỗi và không phải tất cả các chuỗi đều là thuộc tính của đối tượng, vì vậy TypeScript thông báo cho chúng tôi rằng chúng tôi không thể truy cập động thuộc tính một cách an toànNếu bạn cố đặt loại
let cake = '🍰';
// ❌ Old way requires 2 steps
let pan = {
id: 1,
};
pan[cake] = '🥞';
// ✅ YAY, much easier with ES6
let pan = {
id: 1,
[cake]: '🥞',
};
11 thành tổ hợp các khóa của đối tượng, bạn vẫn sẽ gặp lỗiCách dễ nhất để giải quyết vấn đề này là sử dụng xác nhận kiểu
Bạn cũng có thể sử dụng xác nhận loại trực tiếp trong dấu ngoặc vuông
Tuy nhiên, với phương pháp này, bạn phải sử dụng xác nhận kiểu mỗi khi bạn cố gắng truy cập động vào thuộc tính trên đối tượng
Như chúng ta đã biết từ chương Kiểu dữ liệu, có tám kiểu dữ liệu trong JavaScript. Bảy trong số chúng được gọi là "nguyên thủy", bởi vì giá trị của chúng chỉ chứa một thứ duy nhất [có thể là một chuỗi hoặc một số hoặc bất cứ thứ gì]
Ngược lại, các đối tượng được sử dụng để lưu trữ các bộ sưu tập có khóa gồm nhiều dữ liệu khác nhau và các thực thể phức tạp hơn. Trong JavaScript, các đối tượng thâm nhập vào hầu hết mọi khía cạnh của ngôn ngữ. Vì vậy, chúng ta phải hiểu chúng trước khi đi sâu vào bất cứ nơi nào khác
Một đối tượng có thể được tạo bằng dấu ngoặc nhọn
user.isAdmin = true;
2 với danh sách thuộc tính tùy chọn. Thuộc tính là “chìa khóa. value”, trong đó user.isAdmin = true;
3 là một chuỗi [còn được gọi là “tên thuộc tính”] và user.isAdmin = true;
4 có thể là bất kỳ thứ gìChúng ta có thể tưởng tượng một đối tượng như một chiếc tủ chứa các tệp đã ký. Mỗi phần dữ liệu được lưu trữ trong tệp của nó bằng khóa. Thật dễ dàng để tìm một tệp theo tên của nó hoặc thêm/xóa tệp
Một đối tượng trống [“tủ trống”] có thể được tạo bằng một trong hai cú pháp
let user = new Object[]; // "object constructor" syntax
let user = {}; // "object literal" syntax
Thông thường, các dấu ngoặc đơn
user.isAdmin = true;
5 được sử dụng. Tuyên bố đó được gọi là một đối tượng theo nghĩa đenNghĩa đen và tính chất
Chúng ta có thể ngay lập tức đặt một số thuộc tính vào
user.isAdmin = true;
5 dưới dạng “khóa. cặp giá trịlet cake = '🍰';
// ❌ Old way requires 2 steps
let pan = {
id: 1,
};
pan[cake] = '🥞';
// ✅ YAY, much easier with ES6
let pan = {
id: 1,
[cake]: '🥞',
};
0Một thuộc tính có một khóa [còn được gọi là “tên” hoặc “mã định danh”] trước dấu hai chấm
user.isAdmin = true;
7 và một giá trị ở bên phải của nóTrong đối tượng
user.isAdmin = true;
8, có hai thuộc tính- Thuộc tính đầu tiên có tên
9 và giá trịuser.isAdmin = true;
40let cake = '🍰'; // ❌ Old way requires 2 steps let pan = { id: 1, }; pan[cake] = '🥞'; // ✅ YAY, much easier with ES6 let pan = { id: 1, [cake]: '🥞', };
- Cái thứ hai có tên
41 và giá trịlet cake = '🍰'; // ❌ Old way requires 2 steps let pan = { id: 1, }; pan[cake] = '🥞'; // ✅ YAY, much easier with ES6 let pan = { id: 1, [cake]: '🥞', };
42let cake = '🍰'; // ❌ Old way requires 2 steps let pan = { id: 1, }; pan[cake] = '🥞'; // ✅ YAY, much easier with ES6 let pan = { id: 1, [cake]: '🥞', };
Đối tượng
user.isAdmin = true;
8 kết quả có thể được tưởng tượng như một chiếc tủ có hai tệp được ký có nhãn “tên” và “tuổi”Chúng tôi có thể thêm, xóa và đọc các tệp từ nó bất cứ lúc nào
Giá trị thuộc tính có thể truy cập được bằng cách sử dụng ký hiệu dấu chấm
let cake = '🍰';
// ❌ Old way requires 2 steps
let pan = {
id: 1,
};
pan[cake] = '🥞';
// ✅ YAY, much easier with ES6
let pan = {
id: 1,
[cake]: '🥞',
};
8Giá trị có thể thuộc bất kỳ loại nào. Hãy thêm một boolean
user.isAdmin = true;
Để xóa một thuộc tính, chúng ta có thể sử dụng toán tử
let cake = '🍰';
// ❌ Old way requires 2 steps
let pan = {
id: 1,
};
pan[cake] = '🥞';
// ✅ YAY, much easier with ES6
let pan = {
id: 1,
[cake]: '🥞',
};
44let cake = '🍰';
// ❌ Old way requires 2 steps
let pan = {
id: 1,
};
pan[cake] = '🥞';
// ✅ YAY, much easier with ES6
let pan = {
id: 1,
[cake]: '🥞',
};
4Chúng tôi cũng có thể sử dụng tên thuộc tính nhiều từ, nhưng sau đó chúng phải được trích dẫn
let me = {
name: 'samantha',
};
// 1. Dot notation
me.name; // samantha
// 2. Bracket notation [string key]
me['name']; // samantha
// 3. Bracket notation [variable key]
let key = 'name';
me[key]; // samantha
2Thuộc tính cuối cùng trong danh sách có thể kết thúc bằng dấu phẩy
let me = {
name: 'samantha',
};
// 1. Dot notation
me.name; // samantha
// 2. Bracket notation [string key]
me['name']; // samantha
// 3. Bracket notation [variable key]
let key = 'name';
me[key]; // samantha
3Đó được gọi là dấu phẩy “dấu” hoặc “treo”. Làm cho việc thêm/xóa/di chuyển xung quanh các thuộc tính trở nên dễ dàng hơn vì tất cả các dòng đều giống nhau
Dấu ngoặc vuông
Đối với thuộc tính nhiều từ, quyền truy cập dấu chấm không hoạt động
let me = {
name: 'samantha',
};
// 1. Dot notation
me.name; // samantha
// 2. Bracket notation [string key]
me['name']; // samantha
// 3. Bracket notation [variable key]
let key = 'name';
me[key]; // samantha
4JavaScript không hiểu điều đó. Nó nghĩ rằng chúng tôi giải quyết
let cake = '🍰';
// ❌ Old way requires 2 steps
let pan = {
id: 1,
};
pan[cake] = '🥞';
// ✅ YAY, much easier with ES6
let pan = {
id: 1,
[cake]: '🥞',
};
45 và sau đó đưa ra lỗi cú pháp khi gặp phải let cake = '🍰';
// ❌ Old way requires 2 steps
let pan = {
id: 1,
};
pan[cake] = '🥞';
// ✅ YAY, much easier with ES6
let pan = {
id: 1,
[cake]: '🥞',
};
46 không mong muốnDấu chấm yêu cầu khóa phải là mã định danh biến hợp lệ. Điều đó ngụ ý. không chứa khoảng trắng, không bắt đầu bằng một chữ số và không bao gồm các ký tự đặc biệt [cho phép ____147 và ____148]
Có một "ký hiệu dấu ngoặc vuông" thay thế hoạt động với bất kỳ chuỗi nào
let me = {
name: 'samantha',
};
// 1. Dot notation
me.name; // samantha
// 2. Bracket notation [string key]
me['name']; // samantha
// 3. Bracket notation [variable key]
let key = 'name';
me[key]; // samantha
9Bây giờ mọi thứ đều ổn. Xin lưu ý rằng chuỗi bên trong dấu ngoặc được trích dẫn chính xác [bất kỳ loại trích dẫn nào cũng được]
Dấu ngoặc vuông cũng cung cấp một cách để lấy tên thuộc tính là kết quả của bất kỳ biểu thức nào – trái ngược với một chuỗi ký tự – như từ một biến như sau
let cake = '🍰';
let pan = {
[cake]: '🥞',
};
// Output -> { '🍰': '🥞' }
0Ở đây, biến
user.isAdmin = true;
3 có thể được tính trong thời gian chạy hoặc phụ thuộc vào đầu vào của người dùng. Và sau đó chúng tôi sử dụng nó để truy cập tài sản. Điều đó mang lại cho chúng tôi rất nhiều sự linh hoạtVí dụ
let cake = '🍰';
// ❌ Old way requires 2 steps
let pan = {
id: 1,
};
pan[cake] = '🥞';
// ✅ YAY, much easier with ES6
let pan = {
id: 1,
[cake]: '🥞',
};
00Ký hiệu dấu chấm không thể được sử dụng theo cách tương tự
let cake = '🍰';
// ❌ Old way requires 2 steps
let pan = {
id: 1,
};
pan[cake] = '🥞';
// ✅ YAY, much easier with ES6
let pan = {
id: 1,
[cake]: '🥞',
};
01Thuộc tính tính toán
Chúng ta có thể sử dụng dấu ngoặc vuông trong một đối tượng bằng chữ, khi tạo một đối tượng. Đó được gọi là thuộc tính được tính toán
Ví dụ
let cake = '🍰';
// ❌ Old way requires 2 steps
let pan = {
id: 1,
};
pan[cake] = '🥞';
// ✅ YAY, much easier with ES6
let pan = {
id: 1,
[cake]: '🥞',
};
02Ý nghĩa của một thuộc tính được tính toán rất đơn giản.
let me = {
name: 'samantha',
};
// 1. Dot notation
me.name; // samantha
// 2. Bracket notation [string key]
me['name']; // samantha
// 3. Bracket notation [variable key]
let key = 'name';
me[key]; // samantha
20 có nghĩa là tên tài sản nên được lấy từ let me = {
name: 'samantha',
};
// 1. Dot notation
me.name; // samantha
// 2. Bracket notation [string key]
me['name']; // samantha
// 3. Bracket notation [variable key]
let key = 'name';
me[key]; // samantha
21Vì vậy, nếu một khách truy cập vào
let me = {
name: 'samantha',
};
// 1. Dot notation
me.name; // samantha
// 2. Bracket notation [string key]
me['name']; // samantha
// 3. Bracket notation [variable key]
let key = 'name';
me[key]; // samantha
22, thì let me = {
name: 'samantha',
};
// 1. Dot notation
me.name; // samantha
// 2. Bracket notation [string key]
me['name']; // samantha
// 3. Bracket notation [variable key]
let key = 'name';
me[key]; // samantha
23 sẽ trở thành let me = {
name: 'samantha',
};
// 1. Dot notation
me.name; // samantha
// 2. Bracket notation [string key]
me['name']; // samantha
// 3. Bracket notation [variable key]
let key = 'name';
me[key]; // samantha
24Về cơ bản, nó hoạt động giống như
let cake = '🍰';
// ❌ Old way requires 2 steps
let pan = {
id: 1,
};
pan[cake] = '🥞';
// ✅ YAY, much easier with ES6
let pan = {
id: 1,
[cake]: '🥞',
};
03…Nhưng trông đẹp hơn
Chúng ta có thể sử dụng các biểu thức phức tạp hơn bên trong dấu ngoặc vuông
let cake = '🍰';
// ❌ Old way requires 2 steps
let pan = {
id: 1,
};
pan[cake] = '🥞';
// ✅ YAY, much easier with ES6
let pan = {
id: 1,
[cake]: '🥞',
};
04Dấu ngoặc vuông mạnh hơn nhiều so với ký hiệu dấu chấm. Họ cho phép mọi tên thuộc tính và biến. Nhưng chúng cũng rườm rà hơn để viết
Vì vậy, hầu hết thời gian, khi tên thuộc tính được biết và đơn giản, dấu chấm được sử dụng. Và nếu chúng ta cần một cái gì đó phức tạp hơn, thì chúng ta chuyển sang dấu ngoặc vuông
giá trị tài sản viết tắt
Trong mã thực, chúng tôi thường sử dụng các biến hiện có làm giá trị cho tên thuộc tính
Ví dụ
let cake = '🍰';
// ❌ Old way requires 2 steps
let pan = {
id: 1,
};
pan[cake] = '🥞';
// ✅ YAY, much easier with ES6
let pan = {
id: 1,
[cake]: '🥞',
};
05Trong ví dụ trên, các thuộc tính có cùng tên với các biến. Trường hợp sử dụng để tạo một thuộc tính từ một biến phổ biến đến mức có một cách viết tắt giá trị thuộc tính đặc biệt để làm cho nó ngắn hơn
Thay vì
let me = {
name: 'samantha',
};
// 1. Dot notation
me.name; // samantha
// 2. Bracket notation [string key]
me['name']; // samantha
// 3. Bracket notation [variable key]
let key = 'name';
me[key]; // samantha
25, chúng ta chỉ có thể viết let me = {
name: 'samantha',
};
// 1. Dot notation
me.name; // samantha
// 2. Bracket notation [string key]
me['name']; // samantha
// 3. Bracket notation [variable key]
let key = 'name';
me[key]; // samantha
26, như thế nàylet cake = '🍰';
// ❌ Old way requires 2 steps
let pan = {
id: 1,
};
pan[cake] = '🥞';
// ✅ YAY, much easier with ES6
let pan = {
id: 1,
[cake]: '🥞',
};
06Chúng ta có thể sử dụng cả thuộc tính thông thường và tốc ký trong cùng một đối tượng
let cake = '🍰';
// ❌ Old way requires 2 steps
let pan = {
id: 1,
};
pan[cake] = '🥞';
// ✅ YAY, much easier with ES6
let pan = {
id: 1,
[cake]: '🥞',
};
07Giới hạn tên thuộc tính
Như chúng ta đã biết, một biến không thể có tên bằng một trong các từ dành riêng cho ngôn ngữ như “for”, “let”, “return” v.v.
Nhưng đối với một thuộc tính đối tượng, không có giới hạn nào như vậy
let cake = '🍰';
// ❌ Old way requires 2 steps
let pan = {
id: 1,
};
pan[cake] = '🥞';
// ✅ YAY, much easier with ES6
let pan = {
id: 1,
[cake]: '🥞',
};
08Nói tóm lại, không có giới hạn về tên tài sản. Chúng có thể là bất kỳ chuỗi hoặc ký hiệu nào [một loại đặc biệt cho số nhận dạng, sẽ được đề cập sau]
Các loại khác được tự động chuyển đổi thành chuỗi
Chẳng hạn, một số
let me = {
name: 'samantha',
};
// 1. Dot notation
me.name; // samantha
// 2. Bracket notation [string key]
me['name']; // samantha
// 3. Bracket notation [variable key]
let key = 'name';
me[key]; // samantha
27 trở thành một chuỗi let me = {
name: 'samantha',
};
// 1. Dot notation
me.name; // samantha
// 2. Bracket notation [string key]
me['name']; // samantha
// 3. Bracket notation [variable key]
let key = 'name';
me[key]; // samantha
28 khi được sử dụng làm khóa thuộc tínhlet cake = '🍰';
// ❌ Old way requires 2 steps
let pan = {
id: 1,
};
pan[cake] = '🥞';
// ✅ YAY, much easier with ES6
let pan = {
id: 1,
[cake]: '🥞',
};
09Có một vấn đề nhỏ với thuộc tính đặc biệt tên là
let me = {
name: 'samantha',
};
// 1. Dot notation
me.name; // samantha
// 2. Bracket notation [string key]
me['name']; // samantha
// 3. Bracket notation [variable key]
let key = 'name';
me[key]; // samantha
29. Chúng tôi không thể đặt nó thành một giá trị phi đối tượnglet cake = '🍰';
// ❌ Old way requires 2 steps
let pan = {
id: 1,
};
pan[cake] = '🥞';
// ✅ YAY, much easier with ES6
let pan = {
id: 1,
[cake]: '🥞',
};
80Như chúng ta thấy từ mã, việc gán cho một
let me = {
name: 'samantha',
};
// 1. Dot notation
me.name; // samantha
// 2. Bracket notation [string key]
me['name']; // samantha
// 3. Bracket notation [variable key]
let key = 'name';
me[key]; // samantha
30 nguyên thủy bị bỏ quaChúng tôi sẽ đề cập đến bản chất đặc biệt của
let me = {
name: 'samantha',
};
// 1. Dot notation
me.name; // samantha
// 2. Bracket notation [string key]
me['name']; // samantha
// 3. Bracket notation [variable key]
let key = 'name';
me[key]; // samantha
29 trong các chương tiếp theo và đề xuất các cách khắc phục hành vi đóKiểm tra sự tồn tại của thuộc tính, toán tử “in”
Một tính năng đáng chú ý của các đối tượng trong JavaScript, so với nhiều ngôn ngữ khác, là có thể truy cập bất kỳ thuộc tính nào. Sẽ không có lỗi nếu thuộc tính không tồn tại
Đọc thuộc tính không tồn tại chỉ trả về
let me = {
name: 'samantha',
};
// 1. Dot notation
me.name; // samantha
// 2. Bracket notation [string key]
me['name']; // samantha
// 3. Bracket notation [variable key]
let key = 'name';
me[key]; // samantha
32. Vì vậy, chúng tôi có thể dễ dàng kiểm tra xem thuộc tính có tồn tại hay khônglet cake = '🍰';
// ❌ Old way requires 2 steps
let pan = {
id: 1,
};
pan[cake] = '🥞';
// ✅ YAY, much easier with ES6
let pan = {
id: 1,
[cake]: '🥞',
};
81Ngoài ra còn có một nhà điều hành đặc biệt
let me = {
name: 'samantha',
};
// 1. Dot notation
me.name; // samantha
// 2. Bracket notation [string key]
me['name']; // samantha
// 3. Bracket notation [variable key]
let key = 'name';
me[key]; // samantha
33 cho điều đóCú pháp là
let cake = '🍰';
// ❌ Old way requires 2 steps
let pan = {
id: 1,
};
pan[cake] = '🥞';
// ✅ YAY, much easier with ES6
let pan = {
id: 1,
[cake]: '🥞',
};
82Ví dụ
let cake = '🍰';
// ❌ Old way requires 2 steps
let pan = {
id: 1,
};
pan[cake] = '🥞';
// ✅ YAY, much easier with ES6
let pan = {
id: 1,
[cake]: '🥞',
};
83Xin lưu ý rằng ở phía bên trái của
let me = {
name: 'samantha',
};
// 1. Dot notation
me.name; // samantha
// 2. Bracket notation [string key]
me['name']; // samantha
// 3. Bracket notation [variable key]
let key = 'name';
me[key]; // samantha
34 phải có tên tài sản. Đó thường là một chuỗi trích dẫnNếu chúng ta bỏ qua dấu ngoặc kép, điều đó có nghĩa là một biến phải chứa tên thật cần kiểm tra. Ví dụ
let cake = '🍰';
// ❌ Old way requires 2 steps
let pan = {
id: 1,
};
pan[cake] = '🥞';
// ✅ YAY, much easier with ES6
let pan = {
id: 1,
[cake]: '🥞',
};
84Tại sao toán tử
let me = {
name: 'samantha',
};
// 1. Dot notation
me.name; // samantha
// 2. Bracket notation [string key]
me['name']; // samantha
// 3. Bracket notation [variable key]
let key = 'name';
me[key]; // samantha
34 tồn tại? Chà, hầu hết thời gian so sánh với
let me = {
name: 'samantha',
};
// 1. Dot notation
me.name; // samantha
// 2. Bracket notation [string key]
me['name']; // samantha
// 3. Bracket notation [variable key]
let key = 'name';
me[key]; // samantha
32 hoạt động tốt. Nhưng có một trường hợp đặc biệt khi nó bị lỗi, nhưng let me = {
name: 'samantha',
};
// 1. Dot notation
me.name; // samantha
// 2. Bracket notation [string key]
me['name']; // samantha
// 3. Bracket notation [variable key]
let key = 'name';
me[key]; // samantha
33 vẫn hoạt động bình thườngĐó là khi một thuộc tính đối tượng tồn tại, nhưng lưu trữ
let me = {
name: 'samantha',
};
// 1. Dot notation
me.name; // samantha
// 2. Bracket notation [string key]
me['name']; // samantha
// 3. Bracket notation [variable key]
let key = 'name';
me[key]; // samantha
32let cake = '🍰';
// ❌ Old way requires 2 steps
let pan = {
id: 1,
};
pan[cake] = '🥞';
// ✅ YAY, much easier with ES6
let pan = {
id: 1,
[cake]: '🥞',
};
85Trong đoạn mã trên, thuộc tính
let me = {
name: 'samantha',
};
// 1. Dot notation
me.name; // samantha
// 2. Bracket notation [string key]
me['name']; // samantha
// 3. Bracket notation [variable key]
let key = 'name';
me[key]; // samantha
40 tồn tại về mặt kỹ thuật. Vì vậy, toán tử let me = {
name: 'samantha',
};
// 1. Dot notation
me.name; // samantha
// 2. Bracket notation [string key]
me['name']; // samantha
// 3. Bracket notation [variable key]
let key = 'name';
me[key]; // samantha
34 hoạt động đúngNhững tình huống như thế này rất hiếm khi xảy ra, bởi vì
let me = {
name: 'samantha',
};
// 1. Dot notation
me.name; // samantha
// 2. Bracket notation [string key]
me['name']; // samantha
// 3. Bracket notation [variable key]
let key = 'name';
me[key]; // samantha
32 không nên được chỉ định một cách rõ ràng. Chúng tôi chủ yếu sử dụng let me = {
name: 'samantha',
};
// 1. Dot notation
me.name; // samantha
// 2. Bracket notation [string key]
me['name']; // samantha
// 3. Bracket notation [variable key]
let key = 'name';
me[key]; // samantha
43 cho các giá trị "không xác định" hoặc "trống". Vì vậy, toán tử let me = {
name: 'samantha',
};
// 1. Dot notation
me.name; // samantha
// 2. Bracket notation [string key]
me['name']; // samantha
// 3. Bracket notation [variable key]
let key = 'name';
me[key]; // samantha
34 là một vị khách kỳ lạ trong mãCái "cho. trong vòng lặp
Để duyệt qua tất cả các phím của một đối tượng, tồn tại một dạng vòng lặp đặc biệt.
let me = {
name: 'samantha',
};
// 1. Dot notation
me.name; // samantha
// 2. Bracket notation [string key]
me['name']; // samantha
// 3. Bracket notation [variable key]
let key = 'name';
me[key]; // samantha
45. Đây là một điều hoàn toàn khác với cấu trúc let me = {
name: 'samantha',
};
// 1. Dot notation
me.name; // samantha
// 2. Bracket notation [string key]
me['name']; // samantha
// 3. Bracket notation [variable key]
let key = 'name';
me[key]; // samantha
46 mà chúng ta đã nghiên cứu trước đâycú pháp
let cake = '🍰';
// ❌ Old way requires 2 steps
let pan = {
id: 1,
};
pan[cake] = '🥞';
// ✅ YAY, much easier with ES6
let pan = {
id: 1,
[cake]: '🥞',
};
86Chẳng hạn, hãy xuất tất cả các thuộc tính của
user.isAdmin = true;
8let cake = '🍰';
// ❌ Old way requires 2 steps
let pan = {
id: 1,
};
pan[cake] = '🥞';
// ✅ YAY, much easier with ES6
let pan = {
id: 1,
[cake]: '🥞',
};
87Lưu ý rằng tất cả các cấu trúc “for” đều cho phép chúng ta khai báo biến vòng lặp bên trong vòng lặp, chẳng hạn như
let me = {
name: 'samantha',
};
// 1. Dot notation
me.name; // samantha
// 2. Bracket notation [string key]
me['name']; // samantha
// 3. Bracket notation [variable key]
let key = 'name';
me[key]; // samantha
48 ở đâyNgoài ra, chúng ta có thể sử dụng một tên biến khác ở đây thay vì
user.isAdmin = true;
3. Chẳng hạn, let me = {
name: 'samantha',
};
// 1. Dot notation
me.name; // samantha
// 2. Bracket notation [string key]
me['name']; // samantha
// 3. Bracket notation [variable key]
let key = 'name';
me[key]; // samantha
90 cũng được sử dụng rộng rãiĐặt hàng như một đối tượng
Các đối tượng có được sắp xếp không?
Câu trả lời ngắn gọn là. “đặt hàng theo cách đặc biệt”. các thuộc tính số nguyên được sắp xếp, các thuộc tính khác xuất hiện theo thứ tự tạo. các chi tiết sau
Ví dụ: hãy xem xét một đối tượng có mã điện thoại
let cake = '🍰';
// ❌ Old way requires 2 steps
let pan = {
id: 1,
};
pan[cake] = '🥞';
// ✅ YAY, much easier with ES6
let pan = {
id: 1,
[cake]: '🥞',
};
88Đối tượng có thể được sử dụng để đề xuất danh sách các tùy chọn cho người dùng. Nếu chúng tôi đang tạo một trang web chủ yếu dành cho khán giả Đức thì có lẽ chúng tôi muốn
let me = {
name: 'samantha',
};
// 1. Dot notation
me.name; // samantha
// 2. Bracket notation [string key]
me['name']; // samantha
// 3. Bracket notation [variable key]
let key = 'name';
me[key]; // samantha
91 là trang đầu tiênNhưng nếu chúng tôi chạy mã, chúng tôi sẽ thấy một bức tranh hoàn toàn khác
- Hoa Kỳ [1] đi trước
- sau đó là Thụy Sĩ [41], v.v.
Mã điện thoại được sắp xếp theo thứ tự tăng dần vì chúng là số nguyên. Vì vậy, chúng tôi thấy
let me = {
name: 'samantha',
};
// 1. Dot notation
me.name; // samantha
// 2. Bracket notation [string key]
me['name']; // samantha
// 3. Bracket notation [variable key]
let key = 'name';
me[key]; // samantha
92Tính chất số nguyên?
Thuật ngữ “thuộc tính số nguyên” ở đây có nghĩa là một chuỗi có thể được chuyển đổi sang và từ một số nguyên mà không cần thay đổi
Vì vậy,
let me = {
name: 'samantha',
};
// 1. Dot notation
me.name; // samantha
// 2. Bracket notation [string key]
me['name']; // samantha
// 3. Bracket notation [variable key]
let key = 'name';
me[key]; // samantha
93 là một tên thuộc tính số nguyên, bởi vì khi nó được chuyển đổi thành một số nguyên và ngược lại, nó vẫn như vậy. Nhưng let me = {
name: 'samantha',
};
// 1. Dot notation
me.name; // samantha
// 2. Bracket notation [string key]
me['name']; // samantha
// 3. Bracket notation [variable key]
let key = 'name';
me[key]; // samantha
94 và let me = {
name: 'samantha',
};
// 1. Dot notation
me.name; // samantha
// 2. Bracket notation [string key]
me['name']; // samantha
// 3. Bracket notation [variable key]
let key = 'name';
me[key]; // samantha
95 thì khônglet cake = '🍰';
// ❌ Old way requires 2 steps
let pan = {
id: 1,
};
pan[cake] = '🥞';
// ✅ YAY, much easier with ES6
let pan = {
id: 1,
[cake]: '🥞',
};
89…Mặt khác, nếu các khóa không phải là số nguyên, thì chúng được liệt kê theo thứ tự tạo chẳng hạn
user.isAdmin = true;
0Vì vậy, để khắc phục sự cố với mã điện thoại, chúng ta có thể “ăn gian” bằng cách làm cho mã không nguyên. Thêm dấu cộng
let me = {
name: 'samantha',
};
// 1. Dot notation
me.name; // samantha
// 2. Bracket notation [string key]
me['name']; // samantha
// 3. Bracket notation [variable key]
let key = 'name';
me[key]; // samantha
96 trước mỗi mã là đủNhư thế này
user.isAdmin = true;
1Bây giờ nó hoạt động như dự định
Tóm lược
Các đối tượng là các mảng kết hợp với một số tính năng đặc biệt
Chúng lưu trữ các thuộc tính [cặp khóa-giá trị], trong đó
- Khóa thuộc tính phải là chuỗi hoặc ký hiệu [thường là chuỗi]
- Các giá trị có thể thuộc bất kỳ loại nào
Để truy cập một thuộc tính, chúng ta có thể sử dụng
- Ký hiệu dấu chấm.
97let me = { name: 'samantha', }; // 1. Dot notation me.name; // samantha // 2. Bracket notation [string key] me['name']; // samantha // 3. Bracket notation [variable key] let key = 'name'; me[key]; // samantha
- Ký hiệu ngoặc vuông
98. Dấu ngoặc vuông cho phép lấy khóa từ một biến, nhưlet me = { name: 'samantha', }; // 1. Dot notation me.name; // samantha // 2. Bracket notation [string key] me['name']; // samantha // 3. Bracket notation [variable key] let key = 'name'; me[key]; // samantha
99let me = { name: 'samantha', }; // 1. Dot notation me.name; // samantha // 2. Bracket notation [string key] me['name']; // samantha // 3. Bracket notation [variable key] let key = 'name'; me[key]; // samantha
Toán tử bổ sung
- Để xóa một thuộc tính.
00let cake = '🍰'; let pan = { [cake]: '🥞', }; // Output -> { '🍰': '🥞' }
- Để kiểm tra xem một thuộc tính với khóa đã cho có tồn tại không.
01let cake = '🍰'; let pan = { [cake]: '🥞', }; // Output -> { '🍰': '🥞' }
- Để lặp lại một đối tượng. vòng lặp
02let cake = '🍰'; let pan = { [cake]: '🥞', }; // Output -> { '🍰': '🥞' }
Những gì chúng ta đã nghiên cứu trong chương này được gọi là “đối tượng đơn giản”, hoặc chỉ
let cake = '🍰';
let pan = {
[cake]: '🥞',
};
// Output -> { '🍰': '🥞' }
03Có nhiều loại đối tượng khác trong JavaScript
04 để lưu trữ các bộ sưu tập dữ liệu đã đặt hàng,let cake = '🍰'; let pan = { [cake]: '🥞', }; // Output -> { '🍰': '🥞' }
05 để lưu trữ thông tin về ngày giờ,let cake = '🍰'; let pan = { [cake]: '🥞', }; // Output -> { '🍰': '🥞' }
06 để lưu trữ thông tin về lỗilet cake = '🍰'; let pan = { [cake]: '🥞', }; // Output -> { '🍰': '🥞' }
- …Và như thế
Chúng có những tính năng đặc biệt nào mà chúng ta sẽ nghiên cứu sau. Đôi khi mọi người nói điều gì đó như "Kiểu mảng" hoặc "Kiểu ngày", nhưng về mặt hình thức, chúng không phải là kiểu của riêng chúng mà thuộc về một kiểu dữ liệu "đối tượng" duy nhất. Và họ mở rộng nó theo nhiều cách khác nhau
Các đối tượng trong JavaScript rất mạnh. Ở đây chúng ta vừa vạch ra bề nổi của một chủ đề thực sự lớn. Chúng ta sẽ làm việc chặt chẽ với các đối tượng và tìm hiểu thêm về chúng trong các phần tiếp theo của hướng dẫn