Heim  >  Artikel  >  Web-Frontend  >  Ausführliche Erklärung zur Verwendung der Funktion „Apply“-Methode in Javascript

Ausführliche Erklärung zur Verwendung der Funktion „Apply“-Methode in Javascript

伊谢尔伦
伊谢尔伦Original
2017-07-20 14:10:092309Durchsuche

Function.prototype.apply()

Die Apply-Methode ähnelt der Call-Methode. Sie ändert auch den Punkt (den Bereich, in dem die Funktion ausgeführt wird). ) und dann in Diese Funktion im angegebenen Bereich aufrufen. Die Funktion wird auch sofort ausgeführt. Der einzige Unterschied besteht darin, dass es bei der Ausführung der Funktion ein Array als Parameter erhält.

Der erste Parameter der apply-Methode ist auch das Objekt, auf das this zeigt. Wenn er auf null oder undefiniert oder this gesetzt ist, entspricht dies der Angabe des globalen Objekts. Der zweite Parameter ist ein Array, und alle Mitglieder des Arrays werden nacheinander als Parameter verwendet und beim Aufruf an die ursprüngliche Funktion übergeben. Die Parameter der Originalfunktion müssen in der Aufrufmethode einzeln hinzugefügt werden, in der Apply-Methode müssen sie jedoch in Form eines Arrays hinzugefügt werden.

Schauen Sie sich die Nuancen der Ausschreibung an und bewerben Sie sich.


function keith(a, b) {
 console.log(a + b);
 }
 keith.call(null, 2, 3); //5
 keith.apply(null, [2, 3]); //5

Im obigen Code ist der erste Parameter null und zeigt auf den globalen Bereich. Der zweite Parameter wird in einer etwas anderen Form übergeben.

Die Apply-Methode hat die folgenden Anwendungen.

3.1: Finden Sie die maximale Anzahl in einem Array


var a = [2, 4, 5, 7, 8, 10];
console.log(Math.max.apply(null, a)); //10
console.log(Math.max.call(null,2, 4, 5, 7, 8, 10)); //10 

Javascript bietet nicht die Möglichkeit, die maximale Anzahl zu finden In einer Array-Methode können Sie in Kombination mit den von Function.prototype geerbten Methoden apply und Math.max den Maximalwert des Arrays zurückgeben.

3.2: Ändern Sie das leere Element des Arrays in undefiniert

Verwenden Sie die Methode apply, um den Array-Konstruktor zu verwenden, um das leere Element des Arrays in undefiniert zu ändern.

console.log(Array.apply(null, [1, , 3])); // [1, undefined, 3]

Der Unterschied zwischen leeren Elementen und undefiniert besteht darin, dass die forEach-Methode des Arrays leere Elemente überspringt, undefiniert und null jedoch nicht. Daher erhalten Sie beim Durchlaufen der inneren Elemente unterschiedliche Ergebnisse.


var a = [1, , 3];
 a.forEach(function(index) {
 console.log(index); //1,3 ,跳过了空元素。
 })
 Array.apply(null,a).forEach(function(index){
 console.log(index); ////1,undefined,3 ,将空元素设置为undefined
 })

3.3: Konvertieren eines Array-ähnlichen Objekts

Darüber hinaus wird unter Verwendung der Slice-Methode des Array-Objekts Sie können ein Objekt wie Array-Objekte (z. B. Argumentobjekte) in echte Arrays konvertieren. Eine wichtige Anwendung der Slice-Methode besteht natürlich darin, arrayähnliche Objekte in echte Arrays umzuwandeln. Sowohl call als auch apply können diese Anwendung implementieren.


console.log(Array.prototype.slice.apply({0:1,length:1})); //[1]
console.log(Array.prototype.slice.call({0:1,length:1})); //[1]
console.log(Array.prototype.slice.apply({0:1,length:2})); //[1,undefined]
console.log(Array.prototype.slice.call({0:1,length:2})); //[1,undefined]
function keith(a,b,c){
 return arguments;
 }
console.log(Array.prototype.slice.call(keith(2,3,4))); //[2,3,4]

Die Parameter der Call- und Apply-Methoden im obigen Code sind allesamt Objekte, aber die Rückgabeergebnisse sind allesamt Arrays, die dem Zweck der Konvertierung von Objekten dienen Arrays. Wie Sie dem obigen Code entnehmen können, ist die Voraussetzung für das Funktionieren dieser Methode, dass das verarbeitete Objekt über ein Längenattribut und einen entsprechenden numerischen Schlüssel verfügen muss.

Das obige ist der detaillierte Inhalt vonAusführliche Erklärung zur Verwendung der Funktion „Apply“-Methode in Javascript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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