Hạn chế về khóa đối tượng trong JavaScript
Chúng ta không thể viết tất cả các khóa của đối tượng mà không có dấu ngoặc kép, mà chỉ những khóa thỏa mãn các hạn chế sau: chúng không thể bắt đầu bằng chữ số và không thể chứa dấu gạch ngang, dấu cách và những thứ tương tự bên trong.
Nếu một chuỗi vi phạm hạn chế, thì nó cần được đặt trong dấu ngoặc kép. Trong ví dụ sau, một số khóa không thỏa mãn điều kiện và do đó được đặt trong dấu ngoặc kép:
let obj = {'1key': 'a', 'key-2': 'b', key3: 'c'};
Chỉ có thể truy cập vào các khóa như vậy thông qua dấu ngoặc vuông:
console.log(obj['1key']);
console.log(obj['key-2']);
Ngoài ra, việc truy cập các tên như vậy thông qua thuộc tính đối tượng sẽ dẫn đến lỗi:
console.log(obj.1key);
console.log(obj.key-2);
Còn khóa thứ ba là hợp lệ, và chúng ta có thể truy cập nó bằng cả hai cách:
console.log(obj['key3']);
console.log(obj.key3);
Cho đối tượng:
let obj = {
'1a': 1,
'b2': 2,
'c-c': 3,
'd 4': 4,
'e5': 5
};
Đối với những khóa nào của đối tượng này thì dấu ngoặc kép là bắt buộc, và đối với những khóa nào thì không?
Sửa các lỗi mắc phải trong đoạn mã sau:
let obj = {
'1a': 1,
'b2': 2,
'c-c': 3,
'd 4': 4,
'e5': 5
};
console.log(obj.1a);
console.log(obj.b2);
console.log(obj.c-c);
console.log(obj.d 4);
console.log(obj.e5);