सवाल क्या जावास्क्रिप्ट संपत्ति नामों में डैश की अनुमति है?


मैं देख रहा था http://docs.jquery.com/Plugins/Authoring#Defaults_and_Options jQuery के लिए एक साधारण प्लगइन बनाने के लिए। विकल्पों और सेटिंग्स के बारे में अनुभाग के बाद, मैंने निम्नलिखित किया, जो काम नहीं किया (स्क्रिप्ट को सेटिंग का सामना करने के दौरान छोड़ दिया गया)।

var settings = {
    'location' : 'top',
    'background-color': 'blue'
}
...
$this.css('backgroundColor', settings.background-color); // fails here

एक बार जब मैं पृष्ठभूमि रंग से डैश हटा देता हूं, तो चीजें ठीक से काम करती हैं।

var settings = {
    'location' : 'top',
    'backgroundColor': 'blue' // dash removed here
}
...
$this.css('backgroundColor', settings.backgroundColor); 

क्या मुझे कुछ याद आ रहा है, या jQuery दस्तावेज़ गलत हैं?


44
2018-04-01 16:22


मूल


ध्यान दें कि आप उपयोग करने का प्रयास कर रहे हैं background-color एक संपत्ति के रूप में, एक चर के रूप में नहीं। चर केवल पहचानकर्ता ही हो सकते हैं, संपत्ति एक्सेसर कम सख्त हैं और पहचानकर्ता नाम हो सकते हैं (आरक्षित शब्द शामिल नहीं हैं)। लेकिन इस मामले में, background-color न तो पहचानकर्ता और न ही पहचानकर्ता नाम है। - Oriol


जवाब:


नहीं। पार्सर इसे घटाने वाले ऑपरेटर के रूप में व्याख्या करेगा।

तुम कर सकते हो settings['background-color']


90
2018-04-01 16:24



समझा। धन्यवाद, यही वह है जो मुझे इस्तेमाल करना चाहिए था। $ this.css ('पृष्ठभूमि रंग', विकल्प ['पृष्ठभूमि-रंग']); - xecaps12
इस जवाब को स्वीकार करना है क्योंकि यह सही है, और टिप्पणियों में इस तरह के विनोदी बटर शामिल हैं। - xecaps12
इस @ डान के लिए बहुत सराहना की! - Taylor Ackley
@ डैनियल, हमें इसके लिए [] ब्रैकेट का उपयोग करने की आवश्यकता क्यों है? - VjyV
@VjyV क्योंकि जावास्क्रिप्ट इंजन इसकी व्याख्या करेगा - ऑपरेटर और संपत्ति के नाम का हिस्सा नहीं है। - Daniel A. White


परिवर्तन settings.background-color सेवा मेरे settings['background-color']

चर शामिल नहीं हो सकता है - क्योंकि इसे घटाव ऑपरेटर के रूप में पढ़ा जाता है।


15
2018-04-01 16:25



क्योंकि के लिए +1 .. - John Magnolia
अनुरोध हेडर और चर जैसे "सामग्री-प्रकार" जैसे डीकोडिंग महत्वपूर्ण है। मैं अनुरोध मॉड्यूल का उपयोग कर रहा हूं और मुझे सामग्री प्रकार जानने की जरूरत है। मैं प्रतिक्रिया का उपयोग कर सकता हूं। शीर्षलेख ['सामग्री-प्रकार'] - David J


जावास्क्रिप्ट चर में डैश कानूनी नहीं हैं। एक परिवर्तनीय नाम एक अक्षर, डॉलर चिह्न या अंडरस्कोर से शुरू होना चाहिए और उसके बाद एक या संख्या का पालन किया जा सकता है।


8
2018-04-01 16:25



लेकिन यह एक चर नहीं है।


आप तारों में डैश कर सकते हैं। यदि आप वास्तव में उस डैश को रखना चाहते थे, तो आपको ब्रैकेट्स और व्हाट्नॉट का उपयोग करके संपत्ति का संदर्भ लेना होगा:

$this.css('backgroundColor', settings['background-color']);

3
2018-04-01 16:25