Heim > Web-Frontend > js-Tutorial > Hauptteil

Korrekter Verweis auf die Anwendung der Bind-Methode in JavaScript_Javascript-Tipps

WBOY
Freigeben: 2016-05-16 15:59:55
Original
1300 Leute haben es durchsucht

In JavaScript beinhalten Methoden häufig den folgenden Kontext, sodass sie häufig nicht direkt in Anführungszeichen gesetzt werden können. Nehmen Sie als Beispiel das häufigste Beispiel: console.log("info...") und verwenden Sie log direkt („info...“), fällt Ihnen automatisch folgende Syntax ein:

 var log = console.log;
 log("info…");
Nach dem Login kopieren

Leider ist beim Ausführen der Fehler aufgetreten: TypeError: Illegal invocation.

Warum? Für console.log("info...") wird die Protokollmethode für das Konsolenobjekt aufgerufen, sodass diese in der Protokollmethode auf das Konsolenobjekt verweist und wir die Protokollvariable verwenden, um auf die Methode console.log zu verweisen. Rufen Sie dann die Protokollmethode direkt auf. Wenn der Kontext inkonsistent ist, wird natürlich ein Fehler gemeldet.

An diesem Punkt können wir die Bindungsmethode verwenden, um dieses Problem zu lösen. Mit der Bindungsmethode können Sie dies manuell als Kontext der aktuellen Methode übergeben und dann die Methode zurückgeben, die den Kontext enthält, zum Beispiel:

 var log = console.log.bind(console);
 log("info...");

Nach dem Login kopieren

Auf diese Weise treten keine Fehler auf.

Allerdings unterstützt die Bind-Methode IE 8 und niedrigere Browser nicht. Wir können eine selbst implementieren, sie ist sehr einfach.

 Function.prototype.bind = Function.prototype.bind || function(context){
   var _this = this;
   
   return function(){
     _this.apply(context, arguments);
   };
 };

Nach dem Login kopieren

Der Kern wird durch die Apply-Methode implementiert, eine klassische Abschlussanwendung. _this zeigt auf die aktuelle Methode und context zeigt auf den Kontext der aktuellen Methode, auf die beide über Abschlüsse zugegriffen werden können.

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er gefällt Ihnen allen.

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