Saya pikir jawaban yang tepat untuk pertanyaan Cheeso adalah bahwa implementasinya melampaui dokumentasi. Ini tidak lagi membutuhkan string sebagai kuncinya, melainkan sesuatu yang lain, yang bisa berupa string (yaitu dikutip) atau (mungkin) apa pun yang dapat digunakan sebagai nama variabel, yang menurut saya berarti dimulai dengan huruf, _ , atau $, dan hanya menyertakan huruf, angka, dan $ dan _.
Saya ingin menyederhanakan sisanya untuk orang berikutnya yang mengunjungi pertanyaan ini dengan ide yang sama dengan yang saya lakukan. Ini dagingnya:
Nama variabel tidak diinterpolasi di JSON saat digunakan sebagai kunci objek (Terima kasih Friedo!)
Breton, menggunakan "pengenal" bukan "kunci", menulis bahwa "jika pengenal kebetulan adalah kata yang dipesan, itu diartikan sebagai kata itu daripada sebagai pengenal." Ini mungkin benar, tetapi saya mencobanya tanpa masalah:
var a = {do:1,long:2,super:3,abstract:4,var:5,break:6,boolean:7};
a.break
=> 6
Tentang penggunaan tanda kutip, Quentin menulis "... tetapi Anda tidak perlu melakukannya, kecuali [kunci] berisi karakter tertentu (atau kombinasi karakter yang akan menjadikannya kata kunci)"
Saya menemukan bagian sebelumnya (karakter tertentu) benar, menggunakan tanda @ (sebenarnya, saya pikir $ dan _ adalah satu-satunya karakter yang tidak menyebabkan kesalahan):
var a = {a@b:1};
=> Kesalahan sintaks
var a = {"a@b":1};
a['a@b']
=> 1
tetapi tanda kurung tentang kata kunci, seperti yang saya tunjukkan di atas, tidak benar.
Apa yang saya inginkan berfungsi karena teks antara pembukaan {dan titik dua, atau antara koma dan titik dua untuk properti berikutnya digunakan sebagai string tanpa tanda kutip untuk membuat kunci objek, atau, seperti yang dikatakan Friedo, nama variabel di sana tidak ' t mendapatkan interpolasi:
var uid = getUID();
var token = getToken();
var data = {uid:uid,token:token};
data.token
=> ABC123