Heim  >  Artikel  >  Web-Frontend  >  Die Unterschiede und Prinzipien des Aufrufens, Anwendens und Bindens in js sowie die erweiterte Anwendung von Erweiterungen

Die Unterschiede und Prinzipien des Aufrufens, Anwendens und Bindens in js sowie die erweiterte Anwendung von Erweiterungen

hzc
hzcnach vorne
2020-07-04 09:58:112777Durchsuche

Vorwort

Während des Interviewprozesses werden viele neue Fragen auftauchen, die es Ihnen ermöglichen, neues Wissen zu erweitern, und Sie werden auch Punkte entdecken, die Sie in Ihrem Studium übersehen haben.

In einem Vorstellungsgespräch vor zwei Tagen fragte der Interviewer nach dem Unterschied zwischen „Anrufen“, „Bewerben“ und „Binden“. Tatsächlich sollten wir auch verstehen, was der Interviewer mehr fragen möchte, das heißt, was erweitert wird.


call

call ist eine Methode, die von allen Funktionen aufgerufen werden kann, es ist die Methode in Function.prototype

Funktion

  1. Rufen Sie die Funktion

  2. auf, um dies zu ändern, übergeben Sie den Parameter als ersten Parameter

  3. und alle Parameter danach zweiter Parameter

Case

function fn1(){
    console.log(1);
}
function fn2(){
    console.log(2);
}
fn1.call(fn2); //输出 1
fn1.call.call(fn2); //输出 2

Parse :
Die erste Ausgabezeile, genannt fn1 und zeigt this auf fn2
Die zweite Ausgabezeile, tatsächlich die Ausführung von call(), beinhaltet den Mechanismus von Function.prototype.call(). Es behandelt lediglich das Codesegment vor .call() als Variable und überträgt das übergebene Codesegment Zeigt auf this, dann zeigt fn1.call auf fn2, also ist es relativ zu fn2.call(), außer dass das hier übergebene this window

mit

  • Die geerbte Methode

      function Father(uname,age){
          this.uname= uname;
          this.age=age;
      }
      Father.prototype={
          constructor:Father,
          sing:function(){
              console.log("唱跳rap");
          }
      }
      function Son(){
          Father.call(this,uname,age)
      }
      Son.prototype=new Father();
apply

apply ist auch eine Methode, die von allen Funktionen aufgerufen werden kann. Es handelt sich um die Methode

Function.prototype in

Funktion

  1. Funktion aufrufen

  2. Ändern Sie dies

  3. in Parameter übergeben, nach dem zweiten Parameter Der Unterschied zwischen allen Array-Parametern

und dem zweiten Parameter von call

apply ist Array, während call die Parameter als Zahlen

übergibt

Verwenden Sie

  • Verwenden Sie die Math-Funktion, um den Maximalwert zu erhalten

      let arr=Array.of(2,42,56,89,1,24,56,22)
      let max=Math.max.apply(Math,arr)
      console.log(max);
bind

bind ist ebenfalls eine Methode das von allen Funktionen aufgerufen werden kann, ist es die Funktion der Methode

Function.prototype in

  1. , dies zu ändern

  2. um Parameter zu übergeben, nach dem zweiten Parameter Alle numerischen Parameter

  3. Neue Funktion zurückgeben

Der Unterschied zwischen Aufruf und Anwenden

Der größte Unterschied zu den ersten beiden Das heißt, die Funktion wird nicht aufgerufen und die neue Funktion

wird nach der Änderung zurückgegeben. Unter Verwendung des obigen Falls von

let btns=document.querySelectorAll("button")
for(let btn of btns){
    btn.onclick=function(){
        this.disabled=true;
        setTimeout(function(){
            this.disabled=false;
        }.bind(this),2000);
    }
}
wird der Timer

wird geändert und die Funktion wird nicht aufgerufen. Wenn Sie jedoch die Pfeilfunktion zum Schreiben verwenden, ist dies viel einfacher, da das this der Pfeilfunktion kontextbezogen ist this. Dieser Fall soll uns helfen, die Verwendung von this zu verstehen , also hängen Sie es unten an. Wie man Pfeilfunktionen schreibtbind

let btns=document.querySelectorAll("button")
for(let btn of btns){
    btn.onclick=function(){
        this.disabled=true;
        setTimeout(()=>{
            this.disabled=false;
        },2000);
    }
}
Empfohlenes Tutorial: „

JS-Tutorial

Das obige ist der detaillierte Inhalt vonDie Unterschiede und Prinzipien des Aufrufens, Anwendens und Bindens in js sowie die erweiterte Anwendung von Erweiterungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:jianshu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen