संभव डुप्लिकेट:
How can I pre-set arguments in JavaScript function call? (Partial Function Application)पैरामीटर के साथ, मैं फ़ंक्शन के संदर्भ को कैसे पास कर सकता हूं?
मैं करने में सक्षम करने की आवश्यकता है मापदंडों की दी गई सेट के साथ एक समारोह के लिए एक संदर्भ गुजरती हैं।
यहाँ मापदंडों बिना एक संदर्भ पास करने का एक उदाहरण है:
var f = function() {
//Some logic here...
};
var fr = f; //Here I am passing a reference to function 'f', without parameters
fr(); //the 'f' function is invoked, without parameters
अब मैं एक ही f
समारोह पारित किया जाता है क्या करने की जरूरत है, लेकिन इस बार मैं करने के लिए पैरामीटर पास करने की आवश्यकता होगी संदर्भ। अब, मैं यह एक गुमनाम समारोह के साथ क्या कर सकते हैं और नए बनाए गए समारोह के अंदर मानकों के साथ f
समारोह आह्वान, इस तरह की तरह:
var f = function() {
//Some logic here...
};
var fr = function (pars) {
f(pars);
}; //Here I am creating an anonymous function, and invoking f inside it
fr({p : 'a parameter'}); //Invoking the fr function, that will later invoke the f function with parameters
लेकिन मेरे सवाल है, वहाँ के लिए एक सीधा संदर्भ पारित करने के लिए एक रास्ता है f
फ़ंक्शन fr
पर पैरामीटर के साथ, लेकिन बिना किसी अज्ञात फ़ंक्शन में इसे बंद किए?
क्या मैं fr
को आवंटित करने के लिए मानकों (fr()
) के बिना यह invokable बनाने के लिए है, ताकि च (1,2,3) जब fr
शुरू हो जाती है निष्पादित किया जाता है की जरूरत है?
[अद्यतन] मैं hereआंशिक समारोह और जावास्क्रिप्ट समारोह वह पदों के बारे में करने के लिए Jason Bunting के जवाब का पालन किया है मैं वास्तव में क्या देख रहा था।
function partial(func /*, 0..n args */) {
var args = Array.prototype.slice.call(arguments).splice(1);
return function() {
var allArguments = args.concat(Array.prototype.slice.call(arguments));
return func.apply(this, allArguments);
};
}
किसी कारण के लिए, मैं पहले बयान में समस्या आई (वर आर्ग = Array.prototype.slice.call (तर्क) .splice (1);) और इसके बजाय इसका उपयोग करना पड़ा: var args = new Array(); (var i = 1; i
बस किसी को भी इसकी आवश्यकता होने पर: 'Function.prototype.pass = function() { var args = arguments, func = this; रिटर्न फ़ंक्शन() {func.apply (यह, args);} }; ' –