Zwei Methoden werden in JS -Array, Shift () und POP () unterstützt, die darauf hinweisen, einen Wert von vorne und die letzte Seite eines Daten zu löschen und den gelöschten Wert zurückzugeben. Sie werden verstehen, indem Sie sich ein Beispiel ansehen:
Die Codekopie lautet wie folgt:
var arr = ['s', 'o', 'f', 'i', 's', 's', 'H'];
arr.shift (); // return 's'
arr; // momentan ['o', 'f', 'i', 's', 'H']
arr.pop () // return 'h'
arr // derzeit ['o', 'f', 'i', 's']
In vielen JS -Frameworks ist es sehr häufig, dass eine Methode Ihnen mehrere Parameter übergeben kann, und einige dieser Parameter können ignoriert werden. Diese vernachlässigbaren Punkte können die ersten oder die letzte sein. Die traditionelle Art des Schreibens besteht darin, festzustellen, ob die Parameter existieren oder wie viele Parameter der Endwert bestimmen.
Hier können wir das Argumenteobjekt der Funktion sowie das Verschiebung und Pop in Array verwenden, um flexible Anwendungen zu erreichen.
1. Verwenden Sie Verschiebung
So implementieren Sie eine .bind () -Methode, lassen Sie die FN -API wie folgt sein:
Die Codekopie lautet wie folgt:
// Der Umfang von FN ist auf Objekt beschränkt
// Außer Objekt werden alle Parameter von Bind -Methoden an Fn übergeben
fn.bind (Objekt, Param1, Param2, [, paramn]);
Schauen Sie sich zuerst ein Beispiel an. Natürlich kann dieses Beispiel für die Anwendung von Anruf und Bewerbung wichtiger sein. Was wir jedoch sprechen wollen, ist die Anwendung der Verschiebung:
Die Codekopie lautet wie folgt:
// [`.bind`] (http://www.prototypejs.org/api/function/bind) Methode von Prototype.js
Function.prototype.bind = function () {
var fn = this,,
args = array.prototype.slice.call (Argumente),
Object = args.shift ();
return function () {
Rückgabe fn.apply (Objekt,
args.concat (array.prototype.slice.call (argumente)));
};
};
Wir können die Verschiebung zum Argumenteobjekt verwenden (Array-ähnliches Objekt, das in ein echtes Array umgewandelt werden muss), um es herauszunehmen. Beispielsweise verwendet diese Methode sie hauptsächlich, um das Objekt als Umfang zu trennen und dann das verbleibende Parameter -Array an Fn geschickt zu übergeben, dh die Funktion, die wir auf das Objektumfang begrenzen möchten.
2. Verwenden Sie Pop
Vor kurzem versuchen wir SeaJs, nehme wir eine ihrer APIs als Beispiel:
Die Codekopie lautet wie folgt:
Definieren Sie (ID, Abhängigkeiten, Rückruf)
Dies definiert die API, die ID und die Abhängigkeiten eines Moduls können weggelassen werden. Wie kann ich hier diese Unterstützung implementieren? Wenn Sie verwenden, wenn Sie beurteilen, brauchen Sie wirklich, ob (Argumente === 1) {...} elseif ... viele von ihnen. Natürlich hat dies manchmal Vorteile (?, Denken Sie darüber nach). Hier können wir POP verwenden, um die Implementierung dieser Unterstützung zu erleichtern:
Die Codekopie lautet wie folgt:
var define = function () {
// Nehmen Sie diesen Rückruf heraus
var args = [] .lice.call (Argumente)
fn = args.pop ();
// einige andere magische Dinge machen
fn.apply (null, args)
// ...
},
callback = function () {
var args = argumente, i = 0, len = args.length;
if (len === 0) console.log ('nur ein Rückruf');
für (; i <len; i ++) {
console.log (args [i]);
}
}
// Schauen Sie sich die Ausführungsergebnisse der drei an
Definieren (Rückruf);
definieren ('Es gibt zwei Parameter', Rückruf);
definieren ("Es gibt drei Parameter", "Hallo Welt", Rückruf);
Vor zwei Tagen habe ich etwas zitiert, als ich einige Tricks in JS verwendet habe. Obwohl ich mich immer bitte, nicht zu sehr in den Code eingetaucht zu sein, gibt es uns immer zu viel Spaß. Wie man es nicht mag. Ha ha.