Heim >Web-Frontend >js-Tutorial >Beispiel für die Verwendung der Array-Funktionen „shift' und „pop' zum Erstellen ignorierbarer Parameter in JS_Javascript-Kenntnissen

Beispiel für die Verwendung der Array-Funktionen „shift' und „pop' zum Erstellen ignorierbarer Parameter in JS_Javascript-Kenntnissen

WBOY
WBOYOriginal
2016-05-16 16:46:331748Durchsuche

JS Array unterstützt zwei Methoden, shift() und pop(), die sich jeweils auf das Löschen eines Werts am Anfang und Ende von Daten und die Rückgabe des gelöschten Werts beziehen. Schauen Sie sich zum Verständnis einfach ein Beispiel an:

Code kopieren Der Code lautet wie folgt:

var arr = [' s','o','f','i','s','h'];

arr.shift(); // Gibt 's' zurück
arr; // Derzeit ['o','f','i','s','h']
arr.pop () // Return 'h'
arr // Derzeit ist es ['o','f','i','s']


Es ist in vielen JS-Frameworks sehr verbreitet, A Mit der Methode können Sie mehrere Parameter übergeben, und einige dieser Parameter können ignoriert werden. Diese ignorierten Punkte können der erste oder der letzte sein. Die traditionelle Schreibweise besteht darin, zu bestimmen, ob der Parameter vorhanden ist, oder die Anzahl der Parameter, um den Endwert zu bestimmen.

Hier können wir das Argumentobjekt der Funktion sowie Shift und Pop im Array verwenden, um flexible Anwendungen zu erreichen.

1. So implementieren Sie eine .bind()-Methode mit Shift
, sodass die fn-API wie folgt lautet:

Code kopieren Der Code lautet wie folgt:

// Der Umfang von fn ist auf das Objekt beschränkt
// Mit Ausnahme des Objekts werden alle Parameter der Bindungsmethode an übergeben fn
fn.bind(object, param1, param2, [, paramN]);

Schauen wir uns zunächst ein Beispiel an. Was in diesem Beispiel natürlich wichtiger sein könnte, ist die Anwendung von „Call“ und „Apply“. Worüber wir jedoch sprechen möchten, ist die Anwendung der Verschiebung:
Kopieren Sie den Code Der Code 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(arguments),
object = args.shift();
return function(){
return fn.apply( object,
args.concat(Array.prototype.slice.call(arguments)));
};
};

Wir können das Arguments-Objekt verwenden (array-ähnliches Objekt, Wie bei dieser Methode verwenden wir sie hauptsächlich, um das Objekt als Bereich zu trennen, und übergeben dann geschickt das verbleibende Parameterarray an fn, das heißt, wir rufen die Funktion auf Ich möchte mich auf den Objektbereich beschränken.

2. Pop verwenden
Ich probiere kürzlich Seajs aus. Nehmen wir eine seiner APIs als Beispiel:

Code kopieren Der Code lautet wie folgt:

define(id, dependencies, callback)

Dies definiert die API eines Moduls, id und Abhängigkeiten können weggelassen werden. Wie kann diese Unterstützung umgesetzt werden? Wenn Sie if zur Beurteilung verwenden, müssen Sie wirklich häufig if (arguments === 1) {...} elseif ... verwenden. Natürlich hat das manchmal Vorteile (?, denken Sie darüber nach). Hier können wir Pop verwenden, um die Implementierung einer solchen Unterstützung zu erleichtern:
Code kopieren Der Code lautet wie folgt:

var define = function(){
// Diesen Rückruf herausnehmen
var args = [].slice.call(arguments)
fn = args.pop();
// Etwas tun Andere interessante Dinge
fn.apply(null, args)
// ...
},
callback = function(){
var args = arguments, i = 0, len = args.length;
if(len === 0) console.log('Nur ein Rückruf');
for(;i console.log( args[i ]);
}
}

// Schauen Sie sich die Ausführungsergebnisse der drei an
define(callback);
define('hat zwei Parameter', callback);
define('hat drei Parameter', 'Hallo Welt ', Rückruf);


Eine Referenz, die ich vor zwei Tagen gemacht habe, als meine Kollegen und ich einige Techniken in JS lernten. Obwohl ich mir immer sage, dass ich mich nicht zu sehr in Code vertiefen soll, macht uns Code, nicht nur JS, immer zu viel Spaß. Wie man es nicht mag. Ha ha.
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn