2010-02-08 15 views
11

मेरे पास कुछ ऐसा है:किसी अन्य ऑब्जेक्ट की कुंजी के लिए चर मान का उपयोग कैसे करें?

var myMenu= [ 
    { 
    'My English Title':function(menuItem,menu) 
         { ... } 
    }]; 

अब, मैं एक अन्य JSON संरचना मान LOC.MENU_TITLE द्वारा 'मेरा अंग्रेजी शीर्षक' को प्रतिस्थापित करना चाहता हूं।

मैंने कोशिश की है:

var myMenu= [ 
    { 
    LOC.MENU_TITLE:function(menuItem,menu) 
         { ... } 
    }]; 

लेकिन यह काम नहीं करता है। कोई भी मुझे एक JSON वैरिएबल के अंदर JSON मान कैसे प्राप्त करने का संकेत दे सकता है?

संपादित करें: यह Context Menu of Jquery का उपयोग करना है, लेकिन मुझे नीचे दिए गए सभी समाधानों में समस्या आई है और यह तब है जब सेपरेटर के लिए स्ट्रिंग पास करने का समय हो। यह विभाजक नहीं दिखाता है क्योंकि यह केवल स्ट्रिंग के बजाय स्ट्रिंग को ऑब्जेक्ट में पास करता है।

उदाहरण:

var menu1 = [ 
    {'Option 1':function(menuItem,menu) { alert("You clicked Option 1!"); } }, 
    $.contextMenu.separator, 
    {'Option 2':function(menuItem,menu) { alert("You clicked Option 2!"); } } 
]; 
+4

यह जेएसओएन नहीं है, यह सिर्फ एक जावास्क्रिप्ट वस्तु है। –

+2

JSON = जावास्क्रिप्ट ऑब्जेक्ट नोटेशन ... मुझे लगता है कि हम एक ही भाषा बोल रहे हैं: पी –

+2

जेएसओएन जावास्क्रिप्ट ऑब्जेक्ट्स का क्रमबद्ध रूप है और इस तरह की थोड़ी अलग वाक्यविन्यास आवश्यकताएं हैं। जेएसओएन हमेशा स्ट्रिंग के रूप में प्रदर्शित होता है, असली वस्तु नहीं। यह वास्तविक वस्तुओं में पार्स किया गया है, या एक स्ट्रिंग में क्रमबद्ध है। –

उत्तर

10
var tempElement = {}; 
tempElement[ LOC.MENU_TITLE ] = function(menuItem, menu) {}; 

myMenu = [ tempElement ]; 

अपने संपादित को संबोधित करते। निम्नलिखित

var myMenu = [ {}, $.contextMenu.separator, {} ]; 

myMenu[0][ LOC.MENU_TITLE ] = function(menuItem, menu) {}; 
myMenu[2][ LOC.MENU_TITLE2 ] = function(menuItem, menu) {}; 
7

जावास्क्रिप्ट object literals प्रयास करें उम्मीद कुंजी या तो एक Identifier, एक String शाब्दिक या होने के लिए एक Number शाब्दिक, एक समाधान, कदम से अपने वस्तु कदम का निर्माण करने के ब्रैकेट अंकन का उपयोग किया जा सकता है:

var myMenu= [{}]; 
myMenu[0][LOC.MENU_TITLE] = function(menuItem,menu){ /*...*/ }; 

ध्यान दें कि उपर्युक्त JSON नहीं है।

जेएसओएन एक भाषा-अज्ञेय डेटा इंटरचेंज प्रारूप है, इसका व्याकरण जावास्क्रिप्ट ऑब्जेक्ट अक्षर से अलग है, मूल रूप से केवल स्ट्रिंग कुंजी की अनुमति देकर और मान एक ऑब्जेक्ट, सरणी, संख्या, स्ट्रिंग या शाब्दिक नाम होना चाहिए: false, nulltrue

+0

एक सरणी के अंदर ऑब्जेक्ट क्यों करें? 'Var myenu = {} नहीं होगा; myMenu [LOC.MENU_TITLE] 'भी काम करते हैं? –

+1

हां, मैं सिर्फ इस संरचना का पालन कर रहा हूं कि ओपी में 'var myenu = [....]; ' – CMS

+0

संरचना jQuery संदर्भ से है प्लगइन –

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