ฉันคิดว่าคำตอบที่ถูกต้องสำหรับคำถามของ Cheeso คือการนำไปใช้งานนั้นเหนือกว่าเอกสาร ไม่ต้องใช้สตริงเป็นคีย์อีกต่อไป แต่เป็นอย่างอื่นซึ่งอาจเป็นสตริง (เช่นยกมา) หรือ (อาจ) อะไรก็ได้ที่ใช้เป็นชื่อตัวแปรได้ซึ่งฉันจะเดาว่าหมายถึงเริ่มต้นด้วยตัวอักษร _ หรือ $ และรวมเฉพาะตัวอักษรตัวเลขและ $ และ _
ฉันต้องการทำให้ส่วนที่เหลือง่ายขึ้นสำหรับคนถัดไปที่เข้ามาเยี่ยมชมคำถามนี้ด้วยความคิดเดียวกับที่ฉันทำ นี่คือเนื้อ:
ชื่อตัวแปรจะไม่ถูกสอดแทรกใน JSON เมื่อใช้เป็นคีย์ออบเจ็กต์ (ขอบคุณ Friedo!)
Breton โดยใช้ "ตัวระบุ" แทน "คีย์" เขียนว่า "ถ้าตัวระบุเป็นคำสงวนจะถูกตีความว่าเป็นคำนั้นแทนที่จะเป็นตัวระบุ" นี่อาจเป็นความจริง แต่ฉันลองแล้วโดยไม่มีปัญหาใด ๆ :
var a = {do:1,long:2,super:3,abstract:4,var:5,break:6,boolean:7};
a.break
=> 6
เกี่ยวกับการใช้คำพูด Quentin เขียนว่า "... แต่คุณไม่จำเป็นต้องทำเว้นแต่ [คีย์] จะมีอักขระบางตัว (หรือชุดอักขระที่จะทำให้เป็นคีย์เวิร์ด)"
ฉันพบว่าส่วนเดิม (อักขระบางตัว) เป็นจริงโดยใช้เครื่องหมาย @ (อันที่จริงฉันคิดว่า $ และ _ เป็นอักขระเดียวที่ไม่ทำให้เกิดข้อผิดพลาด):
var a = {a@b:1};
=> ข้อผิดพลาดทางไวยากรณ์
var a = {"a@b":1};
a['a@b']
=> 1
แต่วงเล็บเกี่ยวกับคำหลักดังที่ฉันแสดงไว้ข้างต้นไม่เป็นความจริง
สิ่งที่ฉันต้องการใช้งานได้เนื่องจากข้อความระหว่างช่องเปิด {และเครื่องหมายจุดคู่หรือระหว่างเครื่องหมายจุลภาคและเครื่องหมายจุดคู่สำหรับคุณสมบัติที่ตามมาถูกใช้เป็นสตริงที่ไม่มีเครื่องหมายคำพูดเพื่อสร้างคีย์วัตถุหรือตามที่ Friedo ใส่ไว้ชื่อตัวแปรที่นั่นไม่มี ' t ได้รับการแก้ไข:
var uid = getUID();
var token = getToken();
var data = {uid:uid,token:token};
data.token
=> ABC123