In der Praxis können Verschlüsse zu sehr eleganten Designs führen, die eine individuelle Anpassung der verschiedenen auf funarg definierten Berechnungsmethoden ermöglichen. Das Folgende ist ein Beispiel für die Array-Sortierung. Es akzeptiert eine Sortierbedingungsfunktion als Parameter:
[1, 2, 3].sort(function (a, b) { ... // 排序条件 });
Für das gleiche Beispiel ordnet die Map-Methode des Arrays das ursprüngliche Array einem neuen basierend auf zu In der Funktion definierte Bedingungen:
[1, 2, 3].map(function (element) { return element * 2; }); // [2, 4, 6]
Mithilfe von Funktionsparametern können Sie problemlos eine Suchmethode implementieren und unbegrenzte Suchbedingungen unterstützen:
someCollection.find(function (element) { return element.someProperty == 'searchCondition'; });
Es gibt auch Anwendungsfunktionen , wie Die gemeinsame forEach-Methode wendet die Funktion auf jedes Array-Element an:
[1, 2, 3].forEach(function (element) { if (element % 2 != 0) { alert(element); } }); // 1, 3
Übrigens können die Apply- und Call-Methoden des Funktionsobjekts auch als Anwendungsfunktionen in der funktionalen Programmierung verwendet werden. Hier betrachten wir sie als Anwendungsfunktionen – Funktionen, die auf Parameter angewendet werden (eine Parameterliste in „Anwenden“, ein unabhängiger Parameter in „Aufruf“):
(function () { alert([].join.call(arguments, ';')); // 1;2;3 }).apply(this, [1, 2, 3]);
Es gibt noch einen weiteren Abschluss. Sehr wichtige Anwendung – verzögerter Aufruf:
var a = 10; setTimeout(function () { alert(a); // 10, after one second }, 1000);
und Rückruffunktion:
//... var x = 10; // only for example xmlHttpRequestObject.onreadystatechange = function () { // 当数据就绪的时候,才会调用; // 这里,不论是在哪个上下文中创建 // 此时变量“x”的值已经存在了 alert(x); // 10 }; //...
Sie können auch einen gekapselten Bereich erstellen, um Hilfsobjekte auszublenden:
var foo = {}; // 初始化 (function (object) { var x = 10; object.getX = function _getX() { return x; }; })(foo); alert(foo.getX()); // 获得闭包 "x" – 10
Zusammenfassung
In diesem Artikel wird mehr theoretisches Wissen über ECMAScript-262-3 vorgestellt, und ich denke, dass diese grundlegenden Theorien hilfreich sind, um das Konzept des Abschlusses in ECMAScript zu verstehen.
Das Obige ist der Inhalt des JavaScript-Abschlusses Teil 3: Die Verwendung des Verschlusses. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!