Wenn Sie Beispiele nehmen, die Aufrufen, Anwenden und Binden von Methoden in JavaScript als Referenz erläutern. Der spezifische Inhalt ist wie folgt
<! DocType html> <html> <kopf> <meta charset = "utf-8"> <title> </title> <script type = "text/javaScript"> Funktion Man (Name, Sex, Alter) {this.name = name; this.sex = sex; this.age = Alter; this.say = function (schule, zhuanye) {console.log (this.name + "," + this.sex + ", in diesem Jahr" + this.age + "Jahr! Lernen Sie bei" + schul + " + zhuanye);}} Funktion Frau (Name, Sex, Alter) {this.sex = name; San "," männlich ", 26); var Frau = neue Frau (" Xiaohong "," weiblich ", 18); Mann.Say ('Tsinghua University', 'Bagger'); Mann.Say.Call (Frau," Lanxiang technische Schule "," Elektrische Schweißen "; Man.say.bind (Frau) ("Deyun Club", "Popmusik");Warum? Was kann rufen, bewerben, bindend tun? Warum das lernen?
Es wird im Allgemeinen verwendet, um diese Umgebung anzugeben, und diese Probleme treten normalerweise vor dem Lernen auf.
var a = {Benutzer: "Dream Chasing", fn: function () {console.log (this.user); }} var b = a.fn; b (); //undefiniertWas ist los mit dem Benutzer im Objekt A, aber undefiniert? Es ist in Ordnung, wenn wir A.Fn () direkt ausführen.
var a = {user: "chasing treams", fn: function () {console.log (this.user); }} a.fn (); // Träume jagenDer Grund, warum dies hier gedruckt werden kann, ist, dass dies hier auf Funktion A zeigt. Warum zeigt der obige oben auf A nicht? Wenn wir dieses Zeigeproblem verstehen müssen, sehen Sie bitte das gründliche Verständnis dieses Zeigens in JS, und es besteht keine Notwendigkeit, diesen Artikel auswendig zu lernen.
Obwohl diese Methode unseren Zweck erreichen kann, müssen wir dieses Objekt manchmal in einer anderen Variablen speichern, damit wir die folgende Methode verwenden können.
1. call ()
var a = {user: "catching treams", fn: function () {console.log (this.user); // Fangsträume}} var b = a.fn; B.Call (a);Wenn Sie den ersten Parameter hinzufügen, zu dem B zum Hinzufügen von B hinzugefügt werden soll, geben Sie diesen Punkt einfach diesem Objekt an.
Zusätzlich zum ersten Parameter kann die Aufrufmethode wie folgt auch mehrere Parameter hinzufügen:
var a = {user: "catching treams", fn: function (e, ee) {console.log (this.user); // Catching Dreams Console.log (e+ee); // 3}} var b = A.fn; B.Call (a, 1,2);2. anmelden ()
Die Anwendenmethode ähnelt der Aufrufmethode, sie kann auch das Zeigen davon ändern
var a = {user: "catching treams", fn: function () {console.log (this.user); // Fangen von Träumen}} var b = A.fn; B.Apply (a);In ähnlicher Weise kann das Anwendung auch mehrere Parameter haben, aber der Unterschied besteht darin, dass der zweite Parameter ein Array sein muss, wie folgt:
var a = {user: "catching treams", fn: function (e, ee) {console.log (this.user); // Catching Dreams Console.log (e+ee); // 11}} var b = a.fn; B.Apply (a, [10,1]);oder
var a = {user: "catching treams", fn: function (e, ee) {console.log (this.user); // Catching Dreams Console.log (e+ee); // 520}} var b = a.fn; var arr = [500,20]; B.Apply (a, arr); // Beachten var a = {user: "tream chasing", fn: function () {console.log (this); // Fenster {extern: Objekt, Chrom: Objekt, Dokument: Dokument, A: Objekt, Sprachsynthesis: Sprachsynthesis…}}} var b = a.fn; b.Apply (null);3. Bind ()
Die BIND -Methode unterscheidet sich etwas von den Aufruf- und Anwendungsmethoden, kann jedoch verwendet werden, um die Richtung davon zu ändern.
Sprechen wir zuerst über ihre Unterschiede.
var a = {Benutzer: "Dream Chasing", fn: function () {console.log (this.user); }} var b = a.fn; B.bind (a);Wir fanden heraus, dass der Code nicht gedruckt wurde. Ja, dies ist der Unterschied zwischen Bind und Anrufen und Anwenden von Methoden. Tatsächlich gibt die BIND -Methode eine modifizierte Funktion zurück.
var a = {Benutzer: "Dream Chasing", fn: function () {console.log (this.user); }} var b = a.fn; var c = b.bind (a); console.log (c); // function () {[nativer Code]}Führen Sie also die Funktion c aus, um festzustellen, ob wir den Benutzer in Objekt a ausdrucken können
var a = {user: "catching treams", fn: function () {console.log (this.user); // Fangen von Träumen}} var b = A.fn; var c = B.bind (a); c ();OK, BIND kann auch mehrere Parameter haben, und bei der Ausführung können Parameter erneut hinzugefügt werden, aber es ist zu beachten, dass die Parameter in der Reihenfolge der formalen Parameter durchgeführt werden.
var a = {user: "catching treams", fn: function (e, d, f) {console.log (this.user); // Catching Dreams Console.log (e, d, f); // 10 1 2}} var b = a.fn; var c = B.bind (a, 10); c (1,2);Zusammenfassung: Rufen Sie und wenden Sie beide an und ändern Sie dies im Kontext und führen Sie diese Funktion sofort aus. Mit der Bind -Methode kann die entsprechende Funktion aufgerufen werden, wann immer sie möchte, und die Parameter hinzuzufügen, wenn sie ausgeführt wird. Dies ist ihr Unterschied und entscheiden Sie sich für Ihre tatsächliche Situation.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.