Heim >Web-Frontend >js-Tutorial >Welchen Nutzen haben die Methoden call() und apply() in Javascript (Code beigefügt)?

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

不言
不言Original
2018-08-01 16:35:001430Durchsuche

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]]]]);

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);

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);

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

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 = [‘苹果’,’香蕉’,’菠萝’]

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下所有方法*/

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就是返回一个数组的长度

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!

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