2016-05-21 4 views
1

Ich versuche, ein wenig vertraut mit der JavaScript-Terminologie zu werden. Ich glaube, ich bin verwirrt mit den Begriffen iteratee, Rückruf und Funktion FabrikVerständnis der Begriffe iteratee, Callback, Funktion Fabrik in JavaScript

ich folgendes dummes Beispiel verwenden lassen:

//this function accept an array and then returns a new array that 
//contains the elements of the first array altered by func 
function mapForEach(arr, func) { 
    var newArr = []; 
    for (var i = 0; i < arr.length; i++) { 
    newArr.push(func(arr[i])); 
    } 
return newArr; 
} 

//this function multiplies two numbers 
var multiply = function (a, b) { 
console.log(a * b); 
}; 

//this is a silly function that passes a multiplier as the first 
//argument of the multiply function 
var multiplyBy = function(multiplier) { 
return multiply.bind(this, multiplier); 
}; 

var arr = [1, 2, 3]; 

mapForEach(arr, multiplyBy(3)); //[6, 10, 20] 

Also, um mein Verständnis so weit:

  • iteratee (aka Prädikat) ist ein Funktionsobjekt, das etwas Arbeit leistet. In diesem Beispiel mapForEach ein func Objekt akzeptieren einige Arbeit mit den arr Elementen zu tun, so func kann iteratee und damit multiplyBy ist ein iteratee aufgerufen werden. In einem allgemeinen Konzept vielleicht multiply kann auch eine iteratee als eine eigenständige Funktion, die eine grundlegende Arbeit ausführt, betrachtet werden.
  • Rückruf ist eine Funktion A, die Sie einer anderen Funktion B geben, die von der anderen Funktion aufgerufen werden soll (also die andere Funktion B --sort to speak - "ruft" die Funktion A) zurück. In diesem Beispiel, wenn mapForEach aufgerufen wird, wird in einer neuen Umgebung ausgeführt, in der es das Funktionsobjekt func zurück ruft. So kann das Objekt func auch als Rückruf bezeichnet werden. In demselben Zusammenhang kann jedoch mapForEach auch als eine Funktion betrachtet werden, die, wenn sie ausgeführt wird, die -Funktion zurückruft, d.h. ist ein Rückruf zu.
  • Funktion Factory rufen wir eine Funktion, die etwas Arbeit für uns und/oder einen Wert (d. H. Ein Array, Objekt, Funktionsobjekt, was auch immer ....). In unserem Beispiel ist multiplyBy ein Funktionsobjekt, das beim Aufruf ein anderes Funktionsobjekt (eine Kopie von) zurückgibt (multiply), das den Parameter multiplier in seinem Abschluss hat. Somit ist multiplyBy eine Werksfunktion.

Bin ich alle diese richtig hinzubekommen, (oder bin ich verrückt :-P gehen)

Antwort

3

Iteratee keine Funktion ist, die nur einige Arbeit tut. Es muss etwas an einem iterierbaren Set arbeiten, zum Beispiel an einem Array. Ein Prädikat ist eine Funktion, die ein Argument verwendet und true/false zurückgibt, Prädikate werden beispielsweise zum Filtern von iterierbaren Sätzen verwendet. Somit sind Iteratee und Prädikat definitiv nicht identisch.

Funktion Factory ist nicht nur eine Funktion, die etwas Arbeit leistet und einen Wert zurückgibt. Es ist eine Funktion, die basierend auf bereitgestellten Argumenten eine Familie von anderen Funktionen erstellen kann.

Die ist kein Rückruf "per se", der func an mapForEach übergeben wird. Die multiplyBy wird ein Rückruf, wenn Sie es an eine andere Methode übergeben, die es zurückruft.