2013-02-03 22 views
5

मैं एक JSON गतिशील बनाने के लिए कोशिश कर रहा हूँ, लेकिन जब मैं इस तरह कुछ करना कुंजी: मैं elementName के रूप में कुंजी मिल गयागतिशील नाम

var jsonVar = { 
    "section": {} 
} 

var elementsStoragePrefix = "_app_", 
    elementName = elementsStoragePrefix + "some_name"; 

$.extend(jsonVar .section, { elementName: "<option>This is a text</option>"}); 

और नहीं _app_some_name

jsonVar.section => 
    Object 
     elementName: "<option>This is a text</option>" 
     __proto__: Object 

उत्तर

9

ऑब्जेक्ट अक्षर बनाने के दौरान, आपको संपत्ति के नामों को उद्धृत करने की आवश्यकता नहीं है, इसलिए आपके उदाहरण में elementName सचमुच लिया जाएगा। शुक्र है, आप वर्ग ब्रैकेट-वाक्य विन्यास का उपयोग कर सकते हैं (या तथापि आपको लगता है कि वर्तनी):

var extendObject = {}; 
extendObject[elementName] = '<option>Foobar</option>'; 
$.extend(jsonVal.section, extendObject); 
//or, to use brackets all the way: 
$.extend(jsonVal['section'], extendObject); 

उसके लिए आपको

चीजें ठीक करना चाहिए
4
jsonVar.section[elementName] = "<option>This is a text</option>"; 
संबंधित मुद्दे