Referenz: Praktische Verwendung von Verschlüssen
In der Praxis können Verschlüsse elegante Designs erstellen, die die Anpassung verschiedener Berechnungen, verzögerter Anrufe, Rückrufe, die Erstellung eines gekapselten Bereichs usw. ermöglichen.
Ein Beispiel für die Sortiermethode von Arrays, die die Sortierbedingungsfunktion als Argument akzeptiert:
[1, 2, 3].sort(function (a, b) {
... // sort conditions
});
Zuordnen von Funktionalen als Zuordnungsmethode von Arrays, die ein neues Array anhand der Bedingung des Funktionsarguments abbildet:
[1, 2, 3].map(function (element) {
return element * 2;
}); // [2, 4, 6]
Oft ist es zweckmäßig, Suchfunktionen mit funktionalen Argumenten zu implementieren, die nahezu unbegrenzte Suchbedingungen definieren:
someCollection.find(function (element) {
return element.someProperty == 'searchCondition';
});
Wir können auch feststellen, dass das Anwenden von Funktionalen beispielsweise eine forEach-Methode ist, die eine Funktion auf ein Array von Elementen anwendet:
[1, 2, 3].forEach(function (element) {
if (element % 2 != 0) {
alert(element);
}
}); // 1, 3
Eine Funktion wird auf Argumente angewendet (auf eine Liste von Argumenten - in apply und auf positionierte Argumente - in call):
(function () {
alert([].join.call(arguments, ';')); // 1;2;3
}).apply(this, [1, 2, 3]);
Zurückgestellte Anrufe:
var a = 10;
setTimeout(function () {
alert(a); // 10, after one second
}, 1000);
Rückruffunktionen:
var x = 10;
// only for example
xmlHttpRequestObject.onreadystatechange = function () {
// callback, which will be called deferral ,
// when data will be ready;
// variable "x" here is available,
// regardless that context in which,
// it was created already finished
alert(x); // 10
};
Erstellung eines gekapselten Bereichs zum Ausblenden von Hilfsobjekten:
var foo = {};
(function (object) {
var x = 10;
object.getX = function _getX() {
return x;
};
})(foo);
alert(foo.getX());// get closured "x" – 10