2011-04-21 14 views
13

संभव डुप्लिकेट:
Javascript how do you find the caller function?क्या कॉलर फ़ंक्शन का नाम कैली के भीतर प्राप्त करने का कोई तरीका है?

मैं/आज सुबह jQuery थोड़ा जावास्क्रिप्ट के साथ प्रयोग कर रहा हूँ और वर्तमान में क्रियान्वित समारोह के फोन करने वाले का नाम पर कब्जा करने की कोशिश कर रहा था।

तो नीचे दिए गए उदाहरण में, लॉग runMe कॉलर के रूप में और showMe को कॉलली के रूप में दिखाएगा।

jQuery(document).ready(function($) { 

    function showMe() { 
    // should log the runMe as the caller and showMe as callee 
    console.log('Callee: ',arguments.callee) 
    console.log('Caller: ',arguments.caller); 
    } 

    function runMe() { 
    // getting executed as a button is pressed. 
    showMe(); 
    } 

    $('a').bind('click', function(e) { 
    e.preventDefault(); 
    runMe(); 
    }); 

}); 

ऊपर स्पष्ट रूप से काम नहीं करता है, आप सभी को इसलिए मेरे सवाल।

क्या उपरोक्त उदाहरण में कॉलर प्राप्त करने का कोई अच्छा तरीका है?

कृपया ध्यान दें: मुझे पता है मैं runMe की कॉल प्राप्त करने वाला हो और यह showMe एक तर्क के रूप में पारित कर सकता हूँ, लेकिन इस सवाल का एक समाधान है कि फोन करने वाले की आवश्यकता नहीं है समारोह 'मैन्युअल' में प्रदान किया जाने की दिशा में लक्ष्य है।

क्या ऐसा कुछ करने के कारण हैं?

+0

आप पूरे अक्षरों में लिखावट 'jQuery (दस्तावेज़) .ready' लेकिन आशुलिपि' $ ('एक') क्यों लिख सकता हूँ। Bind'? –

+0

ऐसा करने के कारणों के कारण - आपको ऐसा करने की आवश्यकता क्यों है? – Claudiu

+1

@ क्लाउडियो: आप एक अच्छा मनोचिकित्सक बनायेंगे। –

उत्तर

16

आप arguments.caller.name ऐसा करने में सक्षम हुआ करता था, लेकिन इस deprecated in Javascript 1.3 है।

arguments.callee.caller.name (या बस showMe.caller.name) another way to go है। यह सभी प्रमुख ब्राउज़रों में non-standard, but currently supported है।

+1

आप क्यों कहते हैं कि इसे बहिष्कृत किया गया है? क्या छोड़ा गया है 'ऑब्जेक्ट्स' ऑब्जेक्ट की 'कॉलर' प्रॉपर्टी है, यद्यपि आप फ़ंक्शन की 'कॉलर' प्रॉपर्टी का संदर्भ दे रहे हैं, जो आपके दूसरे विकल्प के समान गैर-मानक संदर्भ है। – davin

+0

@ डेविन: आप सही हैं। अच्छी जगह। संपादित करेंगे –

+0

कंसोल कॉल में नाम संपत्ति क्यों आवश्यक है? –

1

मुझे लगता है कि ....

arguments.callee.caller

3

callee.caller इस

function showMe() { 
     // should log the runMe as the caller and showMe as callee 
     console.log('Callee: ',arguments.callee.name) 
     console.log('Caller: ',arguments.callee.caller.name); 
     } 
2

तरह का प्रयास करता है आप के लिए यह काम करता है?

function showMe() { 
    // should log the runMe as the caller and showMe as callee 
    console.log('Callee: ',arguments.callee) 
    console.log('Caller: ',arguments.callee.caller); 
    } 

ध्यान दें, यह गैर मानक जावास्क्रिप्ट है।

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/caller

संबंधित मुद्दे

 संबंधित मुद्दे