मुझे लगता है कि चेसो के सवाल का सही जवाब यह है कि कार्यान्वयन प्रलेखन से आगे निकल गया। इसे अब कुंजी के रूप में एक स्ट्रिंग की आवश्यकता नहीं है, बल्कि कुछ और है, जो या तो एक स्ट्रिंग हो सकती है (यानी उद्धृत) या (शायद) कुछ भी जिसका उपयोग चर नाम के रूप में किया जा सकता है, जो मुझे लगता है कि इसका अर्थ एक पत्र से शुरू होगा, _ , या $, और केवल अक्षर, संख्या और $ और _ शामिल हैं।
मैं अगले व्यक्ति के लिए शेष को सरल बनाना चाहता था जो इस प्रश्न पर जाता है उसी विचार के साथ जो मैंने किया था। यहाँ मांस है:
ऑब्जेक्ट कुंजी के रूप में उपयोग किए जाने पर JSON में परिवर्तनीय नाम प्रक्षेपित नहीं किए जाते हैं (धन्यवाद फ्राइडो!)
ब्रेटन ने "कुंजी" के बजाय "पहचानकर्ता" का उपयोग करते हुए लिखा कि "यदि कोई पहचानकर्ता आरक्षित शब्द होता है, तो उसे पहचानकर्ता के रूप में समझा जाता है।" यह सच हो सकता है, लेकिन मैंने इसे बिना किसी परेशानी के आजमाया:
var a = {do:1,long:2,super:3,abstract:4,var:5,break:6,boolean:7};
a.break
=> 6
उद्धरणों के उपयोग के बारे में, क्वेंटिन ने लिखा है ... "लेकिन आपके पास तब तक नहीं है, जब तक कि [] कुंजी में कुछ वर्ण नहीं होते (या वर्णों का संयोजन जो इसे एक कीवर्ड बनाता है)"
मैंने पाया कि पूर्व भाग (कुछ वर्ण) सत्य है, @ चिह्न का उपयोग करते हुए (वास्तव में, मुझे लगता है कि $ और _ एकमात्र पात्र हैं जो त्रुटि का कारण नहीं हैं):
var a = {a@b:1};
=> सिंटैक्स त्रुटि
var a = {"a@b":1};
a['a@b']
=> १
लेकिन खोजशब्दों के बारे में पैतृक, जैसा कि मैंने ऊपर दिखाया, सच नहीं है।
जो मैं चाहता था वह काम करता है क्योंकि उद्घाटन {और बृहदान्त्र के बीच, या अल्पविराम और बृहदान्त्र के बीच के बाद के गुणों के लिए पाठ का उपयोग किसी वस्तु को कुंजी बनाने के लिए एक अयोग्य स्ट्रिंग के रूप में किया जाता है, या, जैसा कि फ़्रीडो ने इसे रखा है, एक चर नाम है। टी प्रक्षेपित:
var uid = getUID();
var token = getToken(); // Returns ABC123
var data = {uid:uid,token:token};
data.token
=> ABC123