Lỗi khi truy cập thuộc tính đối tượng trong JavaScript
Khi truy cập thuộc tính của một đối tượng, tên của thuộc tính đó không thể được lưu trữ trong một biến. Hãy cùng xem tại sao. Giả sử chúng ta có một đối tượng như thế này:
let obj = {a: 1, b: 2, c: 3};
Giả sử trong biến lưu trữ tên thuộc tính mà chúng ta muốn lấy giá trị:
let key = 'a';
Hãy thử truy cập thuộc tính đối tượng, sử dụng biến này:
console.log(obj.key); // undefined
Đoạn mã trên sẽ không hoạt động, vì
thực tế chúng ta đang tìm kiếm thuộc tính có tên
'key', chứ không phải thuộc tính có tên được lưu trữ
trong biến key. Tức là thực tế
mã của chúng ta tương đương với điều sau:
console.log(obj['key']);
Cách duy nhất để truy cập một phần tử bằng khóa từ một biến là viết biến đó trong dấu ngoặc vuông:
console.log(obj[key]);
Sửa lỗi trong đoạn mã sau:
let obj = {x: 1, y: 2, z: 3};
let prop = 'x';
console.log(obj.prop);
Sửa lỗi trong đoạn mã sau:
let obj = {x: 1, y: 2, z: 3};
let prop = 'x';
console.log(obj['prop']);