मैं JavaScript Garden के माध्यम से ब्राउज़ कर रहा था जब मैंने Function.call.apply हैक पर ठोकर खाई जिसका उपयोग "तेज़, अनबाउंड रैपर" बनाने के लिए किया जाता है। इसे कहते हैं:जावास्क्रिप्ट में Function.call.apply का उपयोग करने का क्या उद्देश्य है?
एक और चाल दोनों कॉल का उपयोग करें और तेजी से, अबाध रैपर बनाने के लिए एक साथ लागू करने के लिए है।
function Foo() {} Foo.prototype.method = function(a, b, c) { console.log(this, a, b, c); }; // Create an unbound version of "method" // It takes the parameters: this, arg1, arg2...argN Foo.method = function() { // Result: Foo.prototype.method.call(this, arg1, arg2... argN) Function.call.apply(Foo.prototype.method, arguments); };
क्या मुझे समझ नहीं आता क्यों Function.call.apply का उपयोग करते समय Function.apply पर्याप्त होगा परेशान है। आखिरकार, वे दोनों अर्थात् समकक्ष हैं।
मैंने [जावास्क्रिप्ट गार्डन] (http://javascriptgarden.info/) के लिए एक लिंक पोस्ट किया था। यदि आप सीधे उस अनुभाग में कूदना चाहते हैं जिसमें पोस्ट है, तो [यहां] क्लिक करें (http://javascriptgarden.info/#function.arguments)। –
tnx, - ऐसा लगता है कि वे इस हैक को कुछ गति देता है .. लेकिन, वास्तव में, बस ** इसका उपयोग न करें **। – c69
@Aadit 'Function.call.apply' और 'फ़ंक्शन।लागू करें 'यहां वही नहीं हो सकता है क्योंकि पूर्व' फंक्शनक्शन 'लागू होता है जबकि दूसरा' फंक्शन 'कन्स्ट्रक्टर को लागू करने का प्रयास करता है। मेरे जवाब में विवरण, लेकिन अगर मैं इवो वेटज़ेल इस जवाब देने के लिए आया तो मैं शर्त लगाऊंगा कि वह कहीं अधिक स्पष्ट और समझदार होगा। यह बल्कि गहरी चीजें है। मैं मानता हूं कि शायद ऐसा कुछ नहीं है जिसे आप तब तक उपयोग नहीं करना चाहिए जब तक कि आप सहकर्मियों को खर्च नहीं करना चाहते हैं, ओह मुझे नहीं पता, एक आधे घंटे_ इसे समझने की कोशिश कर रहा है। :) –