Có hai ký hiệu khác nhau để truy cập thuộc tính đối tượng
- Ký hiệu dấu chấm : myObj.prop1
- Ký hiệu khung : myObj ["prop1"]
Ký hiệu chấm là nhanh chóng và dễ dàng nhưng bạn phải sử dụng tên tài sản thực tế một cách rõ ràng. Không thay thế, biến, vv
Ký hiệu khung là kết thúc mở. Nó sử dụng một chuỗi nhưng bạn có thể tạo chuỗi bằng bất kỳ mã js hợp pháp nào. Bạn có thể chỉ định chuỗi là bằng chữ (mặc dù trong trường hợp này, ký hiệu dấu chấm sẽ đọc dễ dàng hơn) hoặc sử dụng một biến hoặc tính toán theo một cách nào đó.
Vì vậy, tất cả đều đặt thuộc tính myObj có tên prop1 thành giá trị Hello :
// quick easy-on-the-eye dot notation
myObj.prop1 = "Hello";
// brackets+literal
myObj["prop1"] = "Hello";
// using a variable
var x = "prop1";
myObj[x] = "Hello";
// calculate the accessor string in some weird way
var numList = [0,1,2];
myObj[ "prop" + numList[1] ] = "Hello";
Cạm bẫy:
myObj.[xxxx] = "Hello"; // wrong: mixed notations, syntax fail
myObj[prop1] = "Hello"; // wrong: this expects a variable called prop1
tl; dnr : Nếu bạn muốn tính toán hoặc tham chiếu khóa, bạn phải sử dụng ký hiệu ngoặc . Nếu bạn đang sử dụng khóa một cách rõ ràng, thì hãy sử dụng ký hiệu dấu chấm cho mã xóa đơn giản.
Lưu ý: có một số câu trả lời hay và chính xác khác nhưng cá nhân tôi thấy chúng hơi ngắn gọn đến từ mức độ quen thuộc thấp với sự khó hiểu của JS khi đang bay. Điều này có thể hữu ích cho một số người.