Heim > Web-Frontend > js-Tutorial > Hauptteil

Welchen Nutzen haben die Methoden call() und apply() in Javascript (Code beigefügt)?

不言
Freigeben: 2018-08-01 16:35:00
Original
1340 Leute haben es durchsucht

Die apply()-Methode und die call()-Methode in JavaScript sind Methoden von Function-Objekten. Jedes Function-Objekt verfügt über eine apply()-Methode und eine call()-Methode. Methode sind Was ist ihre Verwendung und Funktion in JavaScript? In diesem Artikel geht es um die Verwendung der Methoden apply() und call().

Die Syntax der apply()-Methode und der call()-Methode:

/*apply()方法*/
function.apply(thisObj[, argArray])
/*call()方法*/
function.call(thisObj[, arg1[, arg2[, [,...argN]]]]);
Nach dem Login kopieren

Funktion : Methode eines anderen Objekts ausleihen, ohne sie zu kopieren. (Kann verwendet werden, um eine Methode anstelle eines anderen Objekts aufzurufen und so den Objektkontext einer Funktion vom ursprünglichen Kontext auf das durch thisObj angegebene neue Objekt zu ändern.)

Apply()-Methode und Call()-Methode Grundlegende Verwendung:

function add(a,b){
  return a+b;  
}
function sub(a,b){
  return a-b;  
}
var a1 = add.apply(sub,[4,2]);  //sub调用add的方法
var a2 = sub.apply(add,[4,2]);
alert(a1);  //6     
alert(a2);  //2

/*call的用法*/
var a1 = add.call(sub,4,2);
Nach dem Login kopieren

apply()-Methode und call()-Methode Vererbung implementieren:

function Animal(name){
  this.name = name;
  this.showName = function(){
        alert(this.name);    
    }    
}

function Cat(name){
  Animal.apply(this,[name]);    
}

var cat = new Cat("咕咕");
cat.showName();

/*call的用法*/
Animal.call(this,name);
Nach dem Login kopieren

apply()-Methode und call()-Methode Implementieren Sie die Mehrfachvererbung:

    function Class10(){
      this.showSub = function(a,b){
            alert(a - b);
        }   
    }
    
    function Class11(){
      this.showAdd = function(a,b){
            alert(a + b);
        }  
    }
    
    function Class12(){
      Class10.apply(this);
      Class11.apply(this);   
      // Class10.call(this);
      //Class11.call(this);  
    }
    
    var c2 = new Class12();
    c2.showSub(3,1);    //2
    c2.showAdd(3,1);    //4
Nach dem Login kopieren

Die Funktion der Call()-Methode: Ändern Sie das Pseudo-Array in ein echtes Array

Das Pseudo-Array ist ein JSON-Objekt enthält das Längenattribut Es handelt sich nicht um ein echtes Array, sondern simuliert tatsächlich eine Menge (die Satzdaten beschreibt)

Zum Beispiel:

var json = {1:’苹果’,2:’香蕉’,3:’菠萝’,length:3}
Var arr = [‘苹果’,’香蕉’,’菠萝’]
Nach dem Login kopieren

Seine Eigenschaften:

1 . Die Schlüssel sind alle 1, 2, 3, 4, 5
2. Es enthält ein Längenattribut

So konvertieren Sie ein Pseudo-Array in ein echtes Array

/*我们通过如下方式将其转换成数组*/
/*slice:截取数组,返回的还是数组,这里截取全部*/
var domNodes=Array.prototype.slice.call(divs);
/*这样domNodes就可以应用Array下所有方法*/
Nach dem Login kopieren

apply() Methodenverwendungstipps:

1. Math.max kann das größte Element im Array erreichen:

Weil Math.max unterstützt nicht Math.max ([param1,param2]) ist ein Array, unterstützt aber Math.max(param1,param2...), sodass Sie var max=Math.max.apply(null,array) entsprechend lösen können auf die Eigenschaften von apply, sodass Sie problemlos das größte Element in einem Array erhalten können (apply konvertiert ein Array in eine Parameter-für-Parameter-Methode und übergibt es an die Methode).

Beim Aufruf dieses Blocks wird der erste Parameter an null übergeben. Dies liegt daran, dass es kein Objekt zum Aufrufen dieser Methode gibt. Ich muss diese Methode nur verwenden, um die Berechnung durchzuführen und das zurückgegebene Ergebnis zu erhalten Es wird direkt eine Null übergeben.

Sie können auch diese Methode verwenden, um das minimale Element im Array abzurufen: Math.min.apply(null,array)

2. Array.prototype.push kann zwei implementieren Zusammenführen von Arrays

In ähnlicher Weise stellt die Push-Methode keinen Push für ein Array bereit, sondern Push(param1, param2...paramN). Sie können auch apply verwenden, um dieses Array zu konvertieren ist:

   var arr1=new Array("1","2","3");
    var arr2=new Array("4","5","6");
    Array.prototype.push.apply(arr1,arr2);    
    //得到合并后数组的长度,因为push就是返回一个数组的长度
Nach dem Login kopieren

kann auch so verstanden werden, arr1 ruft die Push-Methode auf und der Parameter ist ein Array, das durch apply in eine Sammlung von Parameterlisten konvertiert wird

Normalerweise unter welchen Umständen , können Sie apply ähnlich wie Math verwenden. Spezielle Verwendungen wie max: Im Allgemeinen benötigt die Zielfunktion nur n Parameterlisten und erhält kein Array. Dieses Problem kann geschickt durch apply gelöst werden.

Empfohlene verwandte Artikel:

Vergleich der Verwendung von Call-Methode und Apply-Methode in JavaScript_Grundkenntnisse

Call- und Apply-Methode in JavaScript Eine kurze Diskussion über _Javascript-Kenntnisse

Das obige ist der detaillierte Inhalt vonWelchen Nutzen haben die Methoden call() und apply() in Javascript (Code beigefügt)?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!