2009-08-11 11 views
5

मैं एक varargs समारोह कॉल करने की आवश्यकता:मैं एक्शनस्क्रिप्ट में सरणी के साथ एक varargs फ़ंक्शन कैसे कॉल कर सकता हूं?

function doSomething(... args): Object { 
    // do something with each arg 
} 

हालांकि, मैं गतिशील इस के लिए बहस का निर्माण कर रहा हूँ:

var someArgs: Array = ['a', 'b', 'c']; 
doSomething(someArgs); 

समस्या यह है, जब मैं इस तरह से फ़ंक्शन को कॉल args समाप्त होता है पहले तत्व के रूप में someArgs के साथ 1-तत्व सरणी होने के नाते, तीन-तत्व सरणी नहीं।

मैं doSomething को someArgs के साथ तर्क सरणी के रूप में कैसे कॉल कर सकता हूं?

+1

नोट: इसे "तर्क अनपॅकिंग" कहा जाता है। यदि आप उस शब्द के साथ-साथ एक्शनस्क्रिप्ट के लिए Google खोजते हैं तो आपको इस मामले पर कुछ चर्चाएं मिलेंगी। ब्रायन के सुझाव का उपयोग करने के लिए .apply सही आईएमओ है। –

+0

बधाई हो, आप पहले से ही "actioncript तर्क अनपॅकिंग" के तहत Google पर # 3 परिणाम हैं :) – Rydell

+0

अच्छा भगवान। SO.com वास्तव में अच्छा कर रहा है, मिमी? –

उत्तर

9

उपयोग Function.apply (खोज इंजन के लिए, यह खोल तर्क है)।

इस तरह

:

doSomething.apply(null, someArgs); 

DoSomething एक वर्ग की एक विधि है, तो बातिल के बजाय वर्ग में गुजरती हैं।

+1

वास्तव में, इससे कोई फर्क नहीं पड़ता कि आप कक्षा/उदाहरण में गुजरते हैं ... AS3 स्वचालित रूप से विधि बंद करता है, जहां "यह" हमेशा विधि के स्वामी होने के लिए पूर्व निर्धारित किया जाता है ... – back2dos

+0

मैं इसे दस के बारे में ढूंढता हूं पोस्ट करने के कुछ मिनट बाद। मैंने सोचा कि मैं अभी भी किसी भी उत्तर देने के लिए प्रतिनिधि प्रदान करता हूं, और यह SO.com पर होना अच्छा लगता है। –

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

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