Die Verwendung der drei Funktionen ruft, wendet sich und Bindung ein Wissenspunkt, der nicht überwunden werden kann, indem die Sprache von JavaScript gelernt wird. Lassen Sie mich die Verwendung der drei und der gemeinsamen Anwendungsszenarien zusammenfassen.
Schauen Sie sich zunächst die Anruffunktion an, die als "Kreditaufnahme" und "Anfrage" verstanden werden kann. Stellen Sie sich das folgende Szenario vor: Sie wandern alleine und möchten zu Hause anrufen, wenn Sie dringende Angelegenheiten haben, aber leider ist Ihr Telefon geschuldet, oder es ist nicht an Kraft, oder es fällt in eine Grube. Kurz gesagt, Ihr Telefon funktioniert einfach nicht. Aber Sie müssen diesen Anruf tätigen, damit Sie das Handy eines Freundes, das Handy eines Nachbarn oder ein öffentliches Telefon ausleihen können. Auf diese Weise können Sie den Anruf abschließen, ohne dass Ihr Telefon verfügbar ist. Was Sie verwenden, ist es egal. Wie auch immer, es ist der gleiche Effekt wie einen Anruf mit Ihrem eigenen Telefon. Die ursprüngliche Absicht der Anruffunktion ähnelt ebenfalls. Lassen Sie mich Code verwenden, um das Anwendungsszenario zu simulieren:
var frog = {name: 'frog', sagen: function () {alert (this.name); }} var Rabbit = {Name: 'Rabbit'} frog.say.call (Rubbit) // KaninchenRubbit ist ein dummes Objekt, aber wenn er seinen Namen sagen will, ist es unmöglich, es mit seiner eigenen Fähigkeit zu erreichen. Glücklicherweise hat es einen guten Freund namens Frog, der sprechen kann. Also bat Rubbit Frosch, diesen Wunsch dafür zu verwirklichen. Der erste Parameter von frog.say.call () muss in der Person ausgefüllt werden, die die Anfrage ausgestellt hat, und der Anwalt nennt ihn gerne den Mandanten. Hier ist der Rubbit -Anforderungsfrosch, um den Namen dafür zu sagen. Füllen Sie also Rubbit aus. Auf diese Weise wird der Rubbit -Name anstelle des Froschnamens durchsucht. Wie würde es aussehen, wenn ich hier Frosch ausfüllen würde? Es ist, als würde man sich bitten, etwas zu tun und sich Salz zu füttern. Sie können es versuchen:
var frog = {name: 'frog', sagen: function () {alert (this.name); }} var Rabbit = {Name: 'Rabbit'} frog.say.call (Frog) // FroschDas Füttern einer Tüte Salz muss Ihr Name sein, und das ist nichts Unerwartetes. Werfen wir einen Blick auf die klassische Anlaufnutzung:
// Parameter in reale Array -Objektfunktion umwandeln Frog () {var arr = [] .Slice.call (Argumente); console.log (Argumente.Slice, arr.slice) // undefined Function Slice () {[nativer Code]}} Frog (1,2,3,4)Nach diesem Anruf können wir das Argumenteobjekt als Array -Objekt verwenden. Es gibt viele Möglichkeiten, Anrufe zu verwenden. Wenn Sie den Quellcode von JQuery öffnen, können Sie problemlos viele Orte finden, an denen Sie ihn verwenden können. Ich werde sie hier nicht alle auflisten, aber ich werde zur Szene vor uns zurückkehren. Es ist zu einfach, einen Anruf auszuleihen. Nachdem ich einen Anruf getätigt habe, möchte ich auf jeden Fall etwas zurückbringen. Immerhin bin ich seit so vielen Jahren herumgewandert und war für ältere Menschen nicht kindlich und habe einige lokale Spezialitäten gekauft, um zurück zu gehen. Es ist definitiv großartig. Der Druck des Lebens draußen ist jedoch so groß, dass es auch jeden Tag Überstunden gibt. Wenn Sie Urlaub nehmen, wird Ihr Gehalt nicht nur abgezogen, sondern Sie müssen auch viele Reisekosten ausgeben. Die Summe dieses Geldes reicht wahrscheinlich für ältere Menschen, um ein Jahr zu Hause zu verbringen. Es war nicht kostengünstig, darüber nachzudenken, also dachte ich noch einmal an die Anruffunktion. Wenn Sie um Hilfe bitten, ist es eine sehr kluge Entscheidung, es übrigens zurückzunehmen, und es lädt nicht auf, beschränkt die Menge nicht, beschränkt das Gewicht nicht und kann so viel bringen wie Sie. Ich werde den Code verwenden, um ihn erneut zu demonstrieren:
var frog = {name: 'frog', send: function (Geld, Lebensmittel, Milch, Suagate) {alert (Geld+Lebensmittel+Milch+Suagate); }} var Rabbit = {Name: 'Rabbit'} frog.send.call (Rubbit, 'Geld', 'Food', 'Milch', 'Suagate')Wenn Sie reich und vorsätzlich sind, können Sie sogar ein paar iPhone 6 oder etwas zurücksenden. .^_^.
Apropos, der Anruf ist fast vorbei. Ich weiß nicht, ob das Szenendrama Sie verstehen lässt, was der Anruf ist. Wenn es nur Ihr Heimweh auferweckt, tut es mir leid.
Call hat auch einen Halbbruder namens Antrag. Wenn Sie die Anwendung des Anrufs verstehen, dann ist das Bewerben tatsächlich dasselbe. Der einzige Unterschied besteht darin, dass es sehr problematisch ist, eine Sache in eine Tasche zu stecken, wenn die Anwendung nicht gerne weitergibt, und es nicht umweltfreundlich ist. Also stellte er eine große Schachtel für die Dinge zur Verfügung und legte einfach alle Dinge, die Sie in die Box geben möchten, die sie zur Verfügung stellt. Diese große Box ist ein Array. Wenn das obige Beispiel mit Bewerbung fertig ist, ist es so:
var frog = {name: 'frog', send: function (Geld, Lebensmittel, Milch, Suagate) {alert (Geld+Lebensmittel+Milch+Suagate); }} var Rabbit = {Name: 'Rabbit'} // Aufmerksamkeit auf die Differenz in den Parametern frog.send.apply (Rubbit, ['Money', 'Food', 'Milch', 'Suagate'])Das obige ist das Vergangenheit und gegenwärtige Leben des Antrags, rufen Sie an. Aber unerwartet bewerben Sie sich und Calls Vater machte vor einigen Jahren ein Vermögen in der Immobilie, und es gab ein uneheliches Kind namens Bind Outside. Obwohl seine beiden Brüder einige Jahre später debütierten und bewerben, sollten ihre Fähigkeiten nicht unterschätzt werden. Seine Identität wird jedoch an einigen Stellen nicht erkannt. Zum Beispiel IE6. Als nächstes werde ich Code verwenden, um seine Fähigkeiten zu demonstrieren:
var name = 'Rubbit'; var frog = {name: 'frog', say: function () {setTimeout (Funktion (Geld, Milch) {alert (this.name+meley+milch)} .bind (this, 'milch', 'milch'), 1000)}} frog.say ();Im Vergleich wurde festgestellt, dass Bind direkt mit function () {} verbunden werden kann. Es entspricht dem Speichern von Anrufen und Bewerben und direkter Angabe des Auftraggebers und der Parameter, die nach der Funktion übergeben werden sollen. In Bezug auf den Stil des Sigma ist es eher ein Anruf.
Schauen wir uns in Bezug auf Bind einen weiteren klassischen Gebrauch an:
var obj = {name: 'frog'} document.addeventListener ('klick', function () {alert (this.name); // frog} .bind (obj), false);Zusammenfassend, bewerben, anrufen, binden, die Ähnlichkeiten zwischen diesen drei Brüdern sind:
1. Der erste Parameter ist der Umfang der Regierung, dh das Gebiet der Arbeit.
2. Alle Parameter können übergeben werden
Die Unterschiede sind:
Anmelden, Call hat eine bessere Kompatibilität. Binden Sie einige niedrigere Versionen von Browsern, die dies nicht unterstützen.
Die vom Antrag übergebenen Parameter müssen in ein Array eingewickelt werden, während Anruf und Bind nacheinander aufgeführt sind.
Haben Sie ein tieferes Verständnis für die Verwendung der drei Funktionen erhalten, sich anwenden und binden? Ich hoffe, dieser Artikel kann Ihnen hilfreich sein.