[javascript] जावास्क्रिप्ट में स्ट्रिंग को परिवर्तनीय नाम में कनवर्ट करें



3 Answers

जावास्क्रिप्ट में ऐसे अवसरों के लिए एक eval() फ़ंक्शन है:

function (varString) {
  var myVar = eval(varString);
  // .....
}

संपादित करें: क्षमा करें, मुझे लगता है कि मैंने प्रश्न को बहुत जल्दी स्किम किया। यह केवल आपको वैरिएबल प्राप्त करेगा, इसे सेट करने के लिए आपको इसकी आवश्यकता होगी

function SetTo5(varString) {
  var newValue = 5;
  eval(varString + " = " + newValue);
}

या यदि एक स्ट्रिंग का उपयोग कर रहे हैं:

function SetToString(varString) {
  var newValue = "string";
  eval(varString + " = " + "'" + newValue + "'");
}

लेकिन मुझे लगता है कि आप जो खोज रहे हैं उसे पूरा करने के लिए एक और उचित तरीका है? मुझे नहीं लगता कि eval () ऐसा कुछ है जिसे आप वास्तव में उपयोग करना चाहते हैं जब तक इसके लिए कोई बड़ा कारण न हो। eval()

Question

मैंने समाधान की तलाश की है, लेकिन वह काम नहीं मिला।

मेरे पास केवल onlyVideo नामक चर है।

"onlyVideo" स्ट्रिंग एक समारोह में पारित हो जाता है। मैं कुछ के रूप में फ़ंक्शन के अंदर वेरिएबल केवल onlyVideo सेट करना चाहता हूं। मैं उसे कैसे कर सकता हूँ?

(ऐसे कई चर हैं जिन्हें फ़ंक्शन में बुलाया जा सकता है, इसलिए मुझे गतिशील रूप से काम करने की आवश्यकता है, if कथन में कठोर कोड नहीं किया गया है।)

संपादित करें: ऐसा करने का शायद एक बेहतर तरीका है जिसे आप करने का प्रयास कर रहे हैं। मैंने इसे अपने जावास्क्रिप्ट साहसिक में जल्दी से पूछा। जांचें कि जावास्क्रिप्ट ऑब्जेक्ट कैसे काम करते हैं।

एक सरल परिचय:

// create JavaScript object
var obj = { "key1": 1 };

// assign - set "key2" to 2
obj.key2 = 2;

// read values
obj.key1 === 1;
obj.key2 === 2;

// read values with a string, same result as above
// but works with special characters and spaces
// and of course variables
obj["key1"] === 1;
obj["key2"] === 2;

// read with a variable
var key1Str = "key1";
obj[key1Str] === 1;



विंडो ['variableName'] विधि केवल तभी काम करती है जब वैरिएबल को वैश्विक दायरे में परिभाषित किया गया हो। सही जवाब "रिएक्टर" है। यदि आप "ऑब्जेक्ट" संदर्भ प्रदान कर सकते हैं तो एक संभावित सामान्य समाधान मौजूद है, लेकिन कुछ चर हैं जो वैरिएबल के दायरे के आधार पर कोई वैश्विक फ़ंक्शन हल नहीं कर सकता है।

(function(){
    var findMe = 'no way';
})();



var myString = "echoHello";

window[myString] = function() {
    alert("Hello!");
}

echoHello();

बुराई eval करने के लिए कहो नहीं। यहां उदाहरण: http://fiddle.jshell.net/Shaz/WmA8t/




यह इस तरह किया जा सकता है

(function(X, Y) {
  
  // X is the local name of the 'class'
  // Doo is default value if param X is empty
  var X = (typeof X == 'string') ? X: 'Doo';
  var Y = (typeof Y == 'string') ? Y: 'doo';
  
  // this refers to the local X defined above
  this[X] = function(doo) {
    // object variable
    this.doo = doo || 'doo it';
  }
  // prototypal inheritance for methods
  // defined by another
  this[X].prototype[Y] = function() {
    return this.doo || 'doo';
  };
  
  // make X global
  window[X] = this[X];
}('Dooa', 'dooa')); // give the names here

// test
doo = new Dooa('abc');
doo2 = new Dooa('def');
console.log(doo.dooa());
console.log(doo2.dooa());




Related