2012-02-08 16 views
7

उद्धरण मान लीजिए मैं निम्नलिखित वस्तु है:जावास्क्रिप्ट वस्तु संपत्ति

var VariableName = { 
    firstProperty: 1, 
    secondProperty: 2 
} 

मैं इस तरह उद्धरण में वस्तु गुण रैप करने के लिए है?

var VariableName = { 
    'firstProperty': 1, 
    'secondProperty': 2 
} 

क्या यह Single quotes in JavaScript object literal सही उत्तर है?

+2

यह ध्यान रखना दिलचस्प हो सकता है कि ऑब्जेक्ट शाब्दिक नोटेशन का उपयोग करते समय कोट्स * नामों से छोड़े जा सकते हैं, JSON विनिर्देश ** ** ** ** ** ** ** ** नामों के लिए आवश्यक है। – Matt

उत्तर

21

नहीं, आपको ऐसा करने की आवश्यकता नहीं है।

केवल कारणों उद्धृत करने के लिए वस्तु चाबियाँ हैं

  • संपत्ति नाम आरक्षित है/ब्राउज़र/js इंजन (जैसे। "वर्ग" IE में)
  • आपको विशेष वर्ण या सफेद है द्वारा इस्तेमाल किया में रिक्त स्थान अपने प्रमुख

तो उदाहरण के लिए

var VariableName = { 
    "some-prop": 42, // needs quotation because of `-` 
    "class": 'foobar' // doesn't syntatically require quotes, but it will fail on some IEs 
    valid: 'yay' // no quotes required 
}; 
+3

यह उत्तर वास्तव में सटीक नहीं है। यह समझाता नहीं है कि वे "विशेष पात्र" वास्तव में क्या हैं (और यह इस तरह के स्पष्टीकरण से जुड़ा नहीं है), और यह केवल ईएस 3 व्यवहार का उल्लेख करता है जहां आरक्षित शब्दों को अनिश्चित संपत्ति नामों के रूप में उपयोग करने की अनुमति नहीं है - ईएस 5 में इसकी अनुमति है यहां एक डुप्लिकेट प्रश्न पर मेरा उत्तर देखें: http://stackoverflow.com/a/9568622/96656 –

1

जावास्क्रिप्ट के लिए आपको आमतौर पर उद्धरणों का उपयोग करने की आवश्यकता नहीं होती है। यदि आप चाहें तो ' या " का उपयोग कर सकते हैं, और यदि आपको अपनी संपत्ति के नाम और null जैसे जेएस आरक्षित शब्द के बीच संघर्ष है तो आपको कोट्स का उपयोग करना होगा। आपके द्वारा लिंक किया गया उत्तर सही लगता है, हां।

JSON के लिए, you should use " around strings (वस्तु संपत्ति सहित नाम) वस्तु शाब्दिक में

4

संपत्ति के नाम तार, संख्या या पहचानकर्ता होना चाहिए। यदि नाम मान्य पहचानकर्ता है, तो आपको उद्धरण की आवश्यकता नहीं है, अन्यथा वे स्ट्रिंग के समान नियमों का पालन करते हैं।

firstProperty और secondProperty दोनों मान्य पहचानकर्ता हैं, इसलिए आपको उद्धरण की आवश्यकता नहीं है।

अधिक जानकारी के लिए the specification पृष्ठ 65 देखें।

4

आप केवल उपयोग करने के लिए संपत्ति के चारों ओर उद्धरण, अगर संपत्ति का नाम एक आरक्षित शब्द है (जैसे, में, फ़ंक्शन, ...)। इस तरह आप जावास्क्रिप्ट को भाषा के हिस्से के रूप में कीवर्ड की व्याख्या करने की कोशिश करने से रोकते हैं और संभवतः एक वाक्यविन्यास त्रुटि प्राप्त करते हैं। इसके अलावा, यदि आप संपत्ति के नामों में रिक्त स्थान का उपयोग करना चाहते हैं, तो आपको उद्धरणों का भी उपयोग करना होगा। यदि आपकी संपत्ति के नाम किसी भी संलयन क्षमता या रिक्त स्थान के बिना सामान्य नाम हैं, तो आप अपने पसंदीदा वाक्यविन्यास का उपयोग कर सकते हैं।

उद्धरण की आवश्यकता के लिए एक अन्य संभावना है जो Google क्लोजर कंपाइलर जैसे जावास्क्रिप्ट मिनीफायर का उपयोग है, क्योंकि यह सभी संपत्ति नामों को प्रतिस्थापित करता है। यदि आप अपनी संपत्ति के नाम उद्धरणों में डालते हैं, हालांकि, क्लोजर कंपाइलर उस संपत्ति को संरक्षित करता है जब आपने इसे कोड किया था। लाइब्रेरी में ऑब्जेक्ट्स निर्यात करते समय या पैरामीटर ऑब्जेक्ट का उपयोग करते समय इसमें कुछ प्रासंगिकता होती है।

संबंधित मुद्दे