दिलचस्प पोस्ट
बाश में दो स्ट्रिंग्स की तुलना करते हुए "कमांड नहीं मिला" त्रुटि प्राप्त करना एक पंक्ति MYSQL में एकाधिक बाल पंक्तियों को मिलाएं इस HTML में एक 3D क्या कर रहा है? PHP में कॉल करने वाले पायथन पीडीओ में तैयार बयान के माध्यम से अल्पविराम सी ++ के साथ प्रिंटिंग सूचियां स्विफ्ट का उपयोग करके पाठ फ़ील्ड (दाएं से बाएं) पर मुद्रा प्रारूप कैसे इनपुट करें? jQuery के यूआई संवाद बटन प्रतीक Iphone पर रेंडरिंग के बाद पीडीएफ फाइल पर टेक्स्ट को हाइलाइट करने के लिए कोई फ्रेमवर्क है मुझे एंड्रॉइड एप्लिकेशन में टुकड़ों का उपयोग कब करना चाहिए? टुकड़ों का उपयोग क्यों करना है? कैसे HTML5 फ़ाइल एपीआई में FileReader.readAsText काम करता है? आईबीआईथॉन नोटबुक में कोशिकाओं से कोड को छुपाने के लिए कैसे nbviewer के साथ दृश्य? गोलंग: बिना स्ट्रिंग को छपाई के प्रारूप में? मैं एक एकल पृष्ठ पर एक से अधिक रिकैप्चस कैसे दिखाऊं? RescaleOp का उपयोग कर छवि का आकार कैसे सेट करें

जावास्क्रिप्ट के साथ एक स्ट्रिंग से फ़ंक्शन बनाने का कोई तरीका है?

उदाहरण के लिए;

var s = "function test(){ alert(1); }"; var fnc = aMethod(s); 

यदि यह स्ट्रिंग है, तो मुझे एक फ़ंक्शन चाहिए जिसे फ़ेन्सी कहा जाता है। और fnc(); चेतावनी स्क्रीन चबूतरे

eval("alert(1);") मेरी समस्या को हल नहीं करता है

वेब के समाधान से एकत्रित समाधान "जावास्क्रिप्ट के साथ एक स्ट्रिंग से फ़ंक्शन बनाने का कोई तरीका है?"

एक स्ट्रिंग से फ़ंक्शन बनाने का एक बेहतर तरीका फ़ंक्शन का उपयोग करके है:

 var fn = Function("alert('hello there')"); fn(); 

इसका लाभ / प्रतिकूलता के रूप में है कि मौजूदा गुंजाइश में वेरिएबल्स (अगर वैश्विक नहीं) नव निर्मित फ़ंक्शन पर लागू नहीं होतीं

पासिंग तर्क भी संभव है:

 var addition = Function("a", "b", "return a + b;"); alert(addition(5, 3)); // shows '8' 

आप बहुत करीबी हैं

 //Create string representation of function var s = "function test(){ alert(1); }"; //"Register" the function eval(s); //Call the function test(); 

यहाँ एक काम कर रहा बेला है

स्ट्रिंग से एक फ़ंक्शन बनाने के लिए मैंने 4 अलग-अलग तरीकों के लिए एक jsperf परीक्षण जोड़ा है:

  • फंक्शन कक्षा के साथ RegExp का उपयोग करना

    var func = "function (a, b) { return a + b; }".parseFunction();

  • फ़ंक्शन कक्षा का उपयोग करके "वापसी"

    var func = new Function("return " + "function (a, b) { return a + b; }")();

  • आधिकारिक फ़ंक्शन कन्स्ट्रक्टर का उपयोग करना

    var func = new Function("a", "b", "return a + b;");

  • Eval का उपयोग करना

    eval("var func = function (a, b) { return a + b; };");

http://jsben.ch/#/D2xTG

2 परिणाम नमूने: यहां छवि विवरण दर्ज करें यहां छवि विवरण दर्ज करें

JavaScript में गतिशील फ़ंक्शन नाम

Function का उपयोग करना

 var name = "foo"; // Implement it var func = new Function("return function " + name + "(){ alert('hi there!'); };")(); // Test it func(); // Next is TRUE func.name === 'foo' 

स्रोत: http://marcosc.com/2012/03/dynamic-function-names-in-javascript/

eval का उपयोग करना

 var name = "foo"; // Implement it eval("function " + name + "() { alert('Foo'); };"); // Test it foo(); // Next is TRUE foo.name === 'foo' 

sjsClass का उपयोग करना

https://github.com/reduardo7/sjsClass

उदाहरण

 Class.extend('newClassName', { __constructor: function() { // ... } }); var x = new newClassName(); // Next is TRUE newClassName.name === 'newClassName' 

हां, Function का उपयोग करना एक बढ़िया समाधान है, लेकिन हम थोड़ी अधिक आगे जा सकते हैं और सार्वभौमिक पार्सर तैयार कर सकते हैं जो तार को पार्स करते हैं और इसे वास्तविक जावास्क्रिप्ट समारोह में परिवर्तित करते हैं …

 if (typeof String.prototype.parseFunction != 'function') { String.prototype.parseFunction = function () { var funcReg = /function *\(([^()]*)\)[ \n\t]*{(.*)}/gmi; var match = funcReg.exec(this.replace(/\n/g, ' ')); if(match) { return new Function(match[1].split(','), match[2]); } return null; }; } 

उपयोग के उदाहरण:

 var func = 'function (a, b) { return a + b; }'.parseFunction(); alert(func(3,4)); func = 'function (a, b) { alert("Hello from function initiated from string!"); }'.parseFunction(); func(); 

यहाँ jsfiddle है

यह तंत्र अंततः eval विधि के बराबर हो सकता है, लेकिन मैं इसे जोड़ना चाहता था, क्योंकि यह कुछ के लिए उपयोगी हो सकता है

 var newCode = document.createElement("script"); newCode.text = "function newFun( a, b ) { return a + b; }"; document.body.appendChild( newCode ); 

यह कार्यात्मक रूप से आपके दस्तावेज़ के अंत में यह <script> तत्व को जोड़ने जैसा है, उदाहरण के लिए:

 ... <script type="text/javascript"> function newFun( a, b ) { return a + b; } </script> </body> </html> 

गतिशील तर्कों के साथ एक उदाहरण:

 let args = {a:1, b:2} , fnString = 'return a + b;'; let fn = Function.apply(Function, Object.keys(args).concat(fnString)); let result = fn.apply(fn, Object.keys(args).map(key=>args[key]))