มีสองสัญลักษณ์ที่แตกต่างกันในการเข้าถึงคุณสมบัติของวัตถุ
- เครื่องหมายดอท : myObj.prop1
- เครื่องหมายวงเล็บ : myObj ["prop1"]
เครื่องหมายดอทนั้นง่ายและรวดเร็ว แต่คุณต้องใช้ชื่อคุณสมบัติจริงอย่างชัดเจน ไม่มีการทดแทนตัวแปร ฯลฯ
เครื่องหมายวงเล็บเปิดสิ้นสุดแล้ว มันใช้สตริง แต่คุณสามารถผลิตสตริงโดยใช้รหัส js ทางกฎหมายใด ๆ คุณอาจระบุสตริงเป็นตัวอักษร (แม้ว่าในกรณีนี้เครื่องหมายจุดจะอ่านง่ายขึ้น) หรือใช้ตัวแปรหรือคำนวณในบางวิธี
ดังนั้นสิ่งเหล่านี้ทั้งหมดตั้งค่าคุณสมบัติmyObjชื่อprop1เป็นค่า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";
ผิดพลาด:
myObj.[xxxx] = "Hello"; // wrong: mixed notations, syntax fail
myObj[prop1] = "Hello"; // wrong: this expects a variable called prop1
tl; dnr : หากคุณต้องการคำนวณหรืออ้างอิงคีย์คุณต้องใช้สัญกรณ์วงเล็บ หากคุณใช้รหัสอย่างชัดเจนให้ใช้เครื่องหมายจุดสำหรับรหัสที่ชัดเจนง่าย
หมายเหตุ: มีคำตอบที่ดีและถูกต้องอยู่บ้าง แต่โดยส่วนตัวแล้วฉันพบว่าพวกเขามาจากความคุ้นเคยกับ JS on-the-fly quirkiness สิ่งนี้อาจเป็นประโยชน์กับบางคน