दिलचस्प पोस्ट
कंसार को कंट्रेसेटेबल एंटिटी के अंत में कैसे ले जाए यौगिक वर्ग के नामों के द्वारा खोज करते समय सुंदर सूप खाली सूची देता है सी में सी में Int HTTP पर जावास्क्रिप्ट में द्विआधारी डेटा भेजा जा रहा है जब उपयोगकर्ता बाउंस से बाहर की ओर स्वाइप करने की कोशिश कर रहा है, तो ViewPager पता लगाता है MySQL दो कॉलम को जोड़ती है और एक नए कॉलम में जोड़ता है कंस्ट्रक्टर में अतिरिक्त पैरामीटर के साथ Ninject का उपयोग करके एक उदाहरण बनाना MySQL में डेलिमिटर वेब अनुप्रयोग सर्वर के बिना जावा वेब सेवा अपने स्ट्रिंग समकक्ष के लिए उद्देश्य-सी टाइप कियाइफ़ को कन्वर्ट करें जावास्क्रिप्ट, नल / अपरिभाषित के लिए नेस्टेड ऑब्जेक्ट गुणों को जांचने का शानदार तरीका तालिका में लापता मूल्यों सहित () परिणामों में आर एचटीएमएल – पेज को रिफ्रेश किए बिना \ पेज पेज अपडेट करें \ पेज पुनः लोड हो रहा है प्रपत्र के बिना स्क्रीन पर खीचें कोणीय 2: अपवाद / त्रुटि का सामना करने के बाद एप्लिकेशन क्रैश / अनुत्तरदायी हो जाता है

जावास्क्रिप्ट ऑब्जेक्ट नाम के रूप में चर का उपयोग करें

मैं एक ऑब्जेक्ट का उपयोग करने के लिए एक वैरिएबल के वैल्यू का इस्तेमाल करना चाहता हूं।

मान लें कि मेरे ऑब्जेक्ट नाम का एक ऑब्जेक्ट है I

मुझे इस नाम के साथ एक वैरिएबल भरना है और वस्तु का उपयोग करने के लिए वेरिएबल का उपयोग करना है।

उदाहरण:

var objname = 'myobject'; {objname}.value = 'value'; 

Solutions Collecting From Web of "जावास्क्रिप्ट ऑब्जेक्ट नाम के रूप में चर का उपयोग करें"

ग्लोबल:

 myObject = { value: 0 }; anObjectName = "myObject"; this[anObjectName].value++; console.log(this[anObjectName]); 

ग्लोबल: v2

 var anObjectName = "myObject"; this[anObjectName] = "myvalue" console.log(myObject) 

स्थानीय: v1

 (function() { var scope = this; if (scope != arguments.callee) { arguments.callee.call(arguments.callee); return false; } scope.myObject = { value: 0 }; scope.anObjectName = "myObject"; scope[scope.anObjectName].value++; console.log(scope.myObject.value); })(); 

स्थानीय: v2

 (function() { var scope = this; scope.myObject = { value: 0 }; scope.anObjectName = "myObject"; scope[scope.anObjectName].value++; console.log(scope.myObject.value); }).call({}); 

ऑब्जेक्ट कुछ गुंजाइश में मौजूद है, इसलिए आप लगभग हमेशा इस वाक्यविन्यास के माध्यम से चर तक पहुंच सकते हैं:

 var objname = "myobject"; containing_scope_reference[objname].some_property = 'some value'; 

एकमात्र ऐसा स्थान जहां यह मुश्किल हो जाता है, जब आप एक बंद क्षेत्र में होते हैं और आप शीर्ष-स्तरीय स्थानीय चर तक पहुँच चाहते हैं जब आपके पास ऐसा कुछ होता है:

 (function(){ var some_variable = {value: 25}; var x = "some_variable"; console.log(this[x], window[x]); // Doesn't work })(); 

आप वर्तमान गुंजाइश श्रृंखला तक पहुंचने के बजाय eval का उपयोग करके इसके आसपास मिल सकते हैं … लेकिन मैं इसे तब तक अनुशंसा नहीं करता जब तक कि आपने बहुत सारे परीक्षण किए हों और आप जानते हैं कि चीजों के बारे में जाने का सबसे अच्छा तरीका यह है।

 (function(){ var some_variable = {value: 25}; var x = "some_variable"; eval(x).value = 42; console.log(some_variable); // Works })(); 

तुम्हारा सबसे अच्छा शर्त हमेशा हमेशा चलने वाली वस्तु-वस्तु में एक नाम का संदर्भ (जैसे कि वैश्विक क्षेत्र में या स्थानीय क्षेत्र में एक निजी शीर्ष-स्तरीय चर) में है और वहां पर बाकी सब कुछ डाल दिया जाए।

इस प्रकार:

 var my_outer_variable = {}; var outer_pointer = 'my_outer_variable'; // Reach my_outer_variable with this[outer_pointer] // or window[outer_pointer] (function(){ var my_inner_scope = {'my_inner_variable': {} }; var inner_pointer = 'my_inner_variable'; // Reach my_inner_variable by using // my_inner_scope[inner_pointer] })(); 

क्या यह एक वैश्विक चर है? यदि हां, तो ये वास्तव में window ऑब्जेक्ट का हिस्सा window , ताकि आप window[objname].valuewindow[objname].value

यदि यह किसी फ़ंक्शन के लिए स्थानीय है, तो मुझे नहीं लगता कि आप क्या करना चाहते हैं यह अच्छा तरीका है।

आप सामान्य रूप से खिड़की के दायरे को छोड़कर ऐसा नहीं कर सकते, जहां आप window[objname].value = 'value'; लिख सकते window[objname].value = 'value';

आप eval उपयोग कर सकते हैं:

 eval(variablename + ".value = 'value'"); 

मुझे लगता है कि स्थानीय चर के लिए शाज़ का जवाब समझना कठिन है, हालांकि यह गैर-रिकर्सिव फ़ंक्शंस के लिए काम करता है। यहाँ एक और तरीका है जो मुझे लगता है कि यह स्पष्ट है (लेकिन यह अभी भी उसका विचार है, सटीक वही व्यवहार) यह गतिशील रूप से स्थानीय चर तक नहीं पहुंच रहा है, बस स्थानीय चर की संपत्ति है।

मूलतः, यह एक वैश्विक चर का उपयोग कर रहा है (फ़ंक्शन ऑब्जेक्ट से जुड़ा हुआ है)

 // Here's a version of it that is more straight forward. function doIt() { doIt.objname = {}; var someObject = "objname"; doIt[someObject].value = "value"; console.log(doIt.objname); })(); 

जो अनिवार्य रूप से वैरिएबल को स्टोर करने के लिए एक वैश्विक बनाने के समान है, इसलिए आप उसे एक संपत्ति के रूप में उपयोग कर सकते हैं। ऐसा करने के लिए एक वैश्विक बनाना एक ऐसी हैक है

यहां एक क्लीनर हैक जो वैश्विक वैरिएबल नहीं बना रहा है, यह एक स्थानीय चर का उपयोग करता है

 function doIt() { var scope = { MyProp: "Hello" }; var name = "MyProp"; console.log(scope[name]); } 

जावास्क्रिप्ट देखें : स्ट्रिंग को ऑब्जेक्ट संदर्भ के रूप में समझें?

चर नाम के आसपास चौकोर ब्रेट का उपयोग करें।

 var objname = 'myobject'; {[objname]}.value = 'value'; 

विंडो का उपयोग करते समय [objname], कृपया सुनिश्चित करें कि objname वैश्विक चर है अन्यथा, कुछ समय काम करेगा, और कभी-कभी असफल हो जायेगा। विंडो [objname] .Value।

यदि वस्तु कुछ नाम स्थान पर है I Company.Module.Components.Foo आप इस फ़ंक्शन का उपयोग कर सकते हैं:

CoffeeScript:

 objByName: (name, context = window) -> ns = name.split "." func = context for n, i in ns func = func[n] return func 

परिणामस्वरूप जेएस:

 objByName: function(name, context) { var func, i, n, ns, _i, _len; if (context == null) { context = window; } ns = name.split("."); func = context; for (i = _i = 0, _len = ns.length; _i < _len; i = ++_i) { n = ns[i]; func = func[n]; } return func; } 

फिर आप एक नया ऑब्जेक्ट बना सकते हैं या कुछ भी कर सकते हैं। माता-पिता के माध्यम से ध्यान दें।

 var o = new (objByName('Company.Module.Components.Foo')) objByName('some.deeply.nested.object').value 

यह विचार समान प्रश्न से उधार लिया गया है: जब किसी स्ट्रिंग के नाम पर जावास्क्रिप्ट फ़ंक्शन निष्पादित किया जाए

 var micro=[{'test':'hello'}]; var device = 'test'; console.log(micro[device]);