ES6 (नीचे भेजे गए हलीम के जवाब से प्रेरित):
myFunction.name
एमडीएन पर स्पष्टीकरण । 2015 के रूप में IE को छोड़कर नोडज और सभी प्रमुख ब्राउज़रों में काम करता है।
नोट: बाध्य कार्यों पर यह " bound <originalName>
" देगा। यदि आप मूल नाम प्राप्त करना चाहते हैं, तो आपको "बाध्य" पट्टी करना होगा।
ES5 (व्लाद के जवाब से प्रेरित):
यदि आपके पास फ़ंक्शन का संदर्भ है, तो आप कर सकते हैं:
function functionName( func )
{
// Match:
// - ^ the beginning of the string
// - function the word 'function'
// - \s+ at least some white space
// - ([\w\$]+) capture one or more valid JavaScript identifier characters
// - \s* optionally followed by white space (in theory there won't be any here,
// so if performance is an issue this can be omitted[1]
// - \( followed by an opening brace
//
var result = /^function\s+([\w\$]+)\s*\(/.exec( func.toString() )
return result ? result[ 1 ] : '' // for an anonymous function there won't be a match
}
- मैंने इस पर इकाई परीक्षण नहीं चलाए हैं, या कार्यान्वयन अंतर को सत्यापित किया है, लेकिन सिद्धांत रूप में यह काम करना चाहिए, अगर कोई टिप्पणी नहीं छोड़नी चाहिए।
- नोट: बाध्य कार्यों पर काम नहीं करेगा
- नोट: कि
caller
और callee
पदावनत माना जाता है।
[१] मैं इसे यहां शामिल करता हूं क्योंकि यह कानूनी है और अक्सर पर्याप्त सिंटैक्स हाइलाइटिंग टूल फ़ंक्शन नाम और कोष्ठक के बीच सफेद स्थान को ध्यान में रखने में विफल होते हैं। दूसरी ओर, मुझे .toString () के किसी भी कार्यान्वयन के बारे में पता नहीं है जिसमें यहां सफेद स्थान शामिल होगा, इसलिए आप इसे छोड़ सकते हैं।
मूल प्रश्न के उत्तर के रूप में, मैं परजीवी विरासत को छोड़ दूंगा और कुछ और पारंपरिक ओओपी डिजाइन पैटर्न के लिए जाऊंगा। मैंने एक TidBits.OoJs को C ++ की नकल करने वाले फीचर सेट (अभी तक पूर्ण नहीं, लेकिन अधिकतर) के साथ जावास्क्रिप्ट में OOP कोड को आराम से लिखने के लिए लिखा है ।
मैं उन टिप्पणियों से देखता हूं जिन्हें आप जानकारी देने से बचना चाहते parent
हैं। मुझे यह स्वीकार करना चाहिए कि पारंपरिक डिजाइन पैटर्न आपको उस एक से नहीं बचाएंगे, क्योंकि आमतौर पर यह आपकी निर्भरता को स्पष्ट और लागू करने के लिए एक अच्छी बात मानी जाती है।
मैं अनाम कार्यों से दूर होने का सुझाव भी दूंगा। वे केवल PITA डिबगिंग और प्रोफाइलिंग करते हैं क्योंकि सब कुछ बस "गुमनाम फ़ंक्शन" के रूप में दिखाई देता है, और उनके लिए कोई लाभ नहीं है जिनके बारे में जानते हैं।