वास्तविक नाम के साथ कोई फ़ंक्शन बनाने का कोई तरीका है जो eval
का उपयोग किये बिना रनटाइम पर निर्धारित किया गया है, और केवल शुद्ध जावास्क्रिप्ट का उपयोग कर रहा है? (इसलिए, script
तत्व उत्पन्न नहीं हुए हैं, क्योंकि वे ब्राउज़र वातावरण के लिए विशिष्ट हैं [और कई तरीकों से eval
किसी भी तरह छिपाने में] होगा; कोई विशेष जावास्क्रिप्ट इंजन, आदि की गैर मानक सुविधाओं का उपयोग नहीं करते हैं)क्या रनटाइम-निर्धारित नाम के साथ कोई फ़ंक्शन बनाने का कोई गैर-eval तरीका है?
ध्यान दें कि मैं विशेष रूप से नहीं हूँ, जैसे चर या गुण होते हैं कि नाम से संदर्भित गुमनाम कार्यों के बारे में पूछ रहा:
// NOT this
var name = /* ...come up with the name... */;
var obj = {};
obj[name] = function() { /* ... */ };
वहाँ है, जबकि वस्तु संपत्ति एक नाम है, समारोह नहीं करता है। बेनामी फ़ंक्शंस बहुत सी चीजों के लिए ठीक है, लेकिन जो मैं यहां देख रहा हूं वह नहीं। मैं चाहता हूं कि फ़ंक्शन का नाम हो (उदा।, डिबगर्स में कॉल स्टैक में दिखाना आदि)।
अज्ञात फ़ंक्शन के बारे में इतना बुरा क्या है? – PiTheNumber
@PiTheNumber: मैंने यह नहीं कहा कि वे बुरे थे। :-) वास्तव में मैंने कहा * "बेनामी फ़ंक्शंस बहुत सी चीजों के लिए ठीक है ..." * लेकिन अज्ञात फ़ंक्शन कॉल स्टैक में दिखाई देते हैं और जैसे "(अनाम)" (या समान), जो उपयोगी से कम है। मुझे पसंद है [मेरे उपकरण मेरी मदद करें] (http://blog.niftysnippets.org/2010/03/anonymouses-anonymous.html), इसलिए जब भी मैं कर सकता हूं तो मैं अपने कार्यों के नाम देता हूं। इस मामले में, मैं एक लाइब्रेरी में फ़ंक्शन फ़ैक्टरी फ़ंक्शन लिख रहा हूं, और यह तय कर रहा हूं कि यह (वैकल्पिक रूप से) कार्यों को वास्तविक नाम, या इस मामले में कोई नाम या स्थिर नाम नहीं दे रहा है या नहीं। –
एमएच, मैं आपको इंगित करता हूं। खैर, मैं अज्ञात कार्यों से बचने के बारे में सोचूंगा। धन्यवाद! – PiTheNumber