Heim >Web-Frontend >js-Tutorial >JavaScript-Abschluss Teil 3: Verwendung von Abschlüssen
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)!