2011-11-14 16 views
28

अधिकांश साइटें Function.arguments की संपत्ति के रूप में "callee" कहती हैं बहिष्कृत है। लेकिन कुछ साइटें आगे बढ़ती हैं और पूरे कार्य कहती हैं। गठबंधन को हटा दिया गया है उदा। http://aptana.com/reference/api/Arguments.html पानी में पूरी दिनचर्या मरने पर केवल कैली का उल्लेख क्यों करें? मैं केवल बस "तर्क" की खोज की और यह अविश्वसनीय रूप से उपयोगी उदा लगता है: http://hungred.com/how-to/secret-arguments-array-javascript/जावास्क्रिप्ट: क्या तर्क सरणी बहिष्कृत है?

उत्तर

44

Function.arguments पदावनत है, लेकिन यह केवल वेनिला arguments उद्देश्य यह है कि एक समारोह के भीतर उपलब्ध के पक्ष में पदावनत है। (उदाहरण के लिए x = theFunc.arguments[i]; के बजाय

अब प्राप्त किए गए क्रमिक तर्कों तक पहुंचने के लिए अब पसंदीदा (और जैसा कि आप कहते हैं, बेहद उपयोगी) विधि है।

+0

आह, यह बताता है! बहुत धन्यवाद। –

+0

यह समझ में आता है। यदि जावास्क्रिप्ट कभी भी कुछ बहु-थ्रेडिंग समर्थन चाहता है, तो ऐसी वैश्विक स्थितिपूर्ण वस्तुएं मारे जा रही हैं। –

+0

हालांकि 'Function.arguments' को बहिष्कृत क्यों किया गया है? यह आपको नेस्टेड फ़ंक्शन के अंदर किसी मूल फ़ंक्शन के तर्कों तक सीधे पहुंचने की अनुमति देता है, यह ऐसा कुछ है जिसे आप 'तर्क' ऑब्जेक्ट से नहीं कर सकते हैं। – Taurus

1

कैली को बहिष्कृत किया गया है, लेकिन तर्क कई अनुप्रयोगों में उपयोग किया जाता है। मुझे नहीं पता कि तर्क बहिष्कृत हैं या नहीं। फ़ंक्शन के सभी पैरामीटर प्राप्त करने के लिए आप इसका उपयोग कर सकते हैं, भले ही फ़ंक्शन (पैराम्स) में परिभाषित न हो।

अधिकांश समय जब मैंने एक jQuery प्लगइन विकसित किया था तब मैंने उपयोग किया था। की तरह कुछ:

$.fn.tooltip = function(method) { 
    if (methods[method]) { 
     return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); 
    } else if (typeof method === 'object' || ! method) { 
     return methods.init.apply(this, arguments); 
    } else { 
     $.error('Method ' + method + ' does not exist on jQuery.tooltip'); 
    }  
    }; 

आप देख सकते हैं एकमात्र तरीका एक पैरामीटर के रूप पारित हो जाता है, लेकिन पहले के अंदर तर्क पहले मान के बाद विभाजित है। इस तरह आप एक फ़ंक्शन नाम, और इस फ़ंक्शन द्वारा उपयोग किए गए सभी पैरामीटर पास कर सकते हैं।

पूर्ण उदाहरण: http://docs.jquery.com/Plugins/Authoring

1

नहीं है, तर्क सरणी विनिर्देशन का नवीनतम संस्करण 5.1 में पदावनत नहीं है (पेज 60 देखें)। caller ऑब्जेक्ट केवल तभी उपलब्ध होगा यदि कोड सख्त मोड में नहीं है।

6

अफैइक arguments फंक्शन की संपत्ति के रूप में को बहिष्कृत कर दिया गया है। this MDN-link देखें, या this one