Funktionsaufrufmethode
Bevor ich über die drei Brüder spreche, rufe und binden in JavaScript, ich möchte darüber sprechen, was die Anrufmethoden der Funktionen sind:
• als Funktion
• Als Methode
• Als Konstruktor
• Rufen Sie indirekt die Methoden Call () und anwenden () an
Wir alle kennen die vorherigen drei Aufrufmethoden und liegen nicht im Rahmen dieses Artikels, daher werden wir nicht darüber sprechen.
Sprechen wir über die vierte Anrufmethode
Indirekte Anrufe über Call () und anwenden ()
Tatsächlich können wir diese beiden Funktionen als Methoden eines bestimmten Objekts betrachten und die Funktion indirekt aufrufen, indem wir die Methode aufrufen:
Funktion f () {} f.call (o); f.apply (o);Der erste Parameter von CALL () und Apply () ist das übergeordnete Objekt zum Aufrufen der Funktion. Es ist der aufrufende Kontext, und ein Hinweis darauf wird durch diese innerhalb des Funktionskörpers erhalten.
Sind sie also die gleichen oder gibt es Unterschiede und auch die Bindungsmethode? Machen Sie sich keine Sorgen, analysieren wir die Unterschiede und Verbindungen zwischen den drei unten detaillierten.
Anruf()
Die CALL () -Methode gibt einen bestimmten Zeiger an (Idiot, stört mich nicht über seine Richtigkeit) und Parameter für die Methode, die ihn nennt. Zum Beispiel gibt es eine solche Funktion:
var fn = function (arg1, arg2) {console.log (this, arg1, arg2); }Ich werde es nennen:
fn.call (null, 'skylor', 'min'); //1fn.call(undefined, 'Skylor', 'min'); // 2var fx = function () {} fn.call (fx, 'skylor', 'min'); // 3Was sind die Rückgabewerte dieser drei Anrufmethoden? Kein Unsinn, bitte siehe:
1. Null "Skylor" "Min" 2. Undefined "Skylor" "Min" 3. FX "Skylor" "min"
Ist das wirklich der Fall? Sie sind schlau, gehen Sie zur Browserkonsole und probieren Sie es aus. Ich werde gehen, du bist ein Betrüger, das ist nicht so:
Chrome1. Fenster "Skylor" "min" 2. Fenster "Skylor" "min" 3. FX "Skylor" "min"
OK, du bist schlau. Dies zeigt jedoch bereits die Anrufmethode sehr gut. (Fenster ist sehr fortgeschritten, Microsoft kichert ...)
Wir haben festgestellt, dass die Aufrufmethode, der erste Parameter diesen Zeiger angeben, und jeder Parameter danach die erforderlichen Parameter angibt. Beachten Sie, dass ich "jeweils" verwende, was bedeutet, dass Sie mehrere Parameter benötigen und die Funktion aufrufen und jeden Parameter einzeln in sie schreiben möchten.
anwenden()
anwenden () ist der Bruder von Call (). Die anderen Orte sehen gleich aus, sie sind alle Männer, aber sie sind an einem Ort unterschiedlich. Schauen wir uns zuerst das Beispiel an:
fn.apply (null, ['skylor', 'min']); //1fn.apply(fx, ['Skylor', 'min']); // 2
Bruder, hast du es falsch geschrieben? Es gibt mehr Klammern. Nein, nein, nein, das ist es, was es anders aussieht als der Anruf. Sein zweiter Parameter ist das erforderliche Parameterarray.
binden()
Bind (), sind nicht sie drei Brüder, ich verstehe das, Blabla ... nein, nein, es ist ein vereinter Bruder, der vereidigt ist, mit Bewerbung und Ruf zu vereidigen, kein echter Bruder.
Mit der Bind -Methode können Sie natürlich auch diesen Zeiger angeben, aber anstatt eine Funktion aufzurufen, gibt sie eine (oder eine Kopie) Funktion zurück, die ihn aufruft, und gibt einen bestimmten Zeiger und Parameter für diese Funktion an. Konvention, Beispiele veranschaulichen alles:
var fnbound = fn.bind (null, 'skylor', 'min');
Zu diesem Zeitpunkt ist FNBound eine Funktion, eine weitere Funktion mit diesem Hinweis auf Null und die Parameter sind ['Skylor', 'min']. Angerufen:
fnBound ();
Ergebnis:
NULL, 'Skylor', 'min'
Mach dir keine Sorgen um Fenster mit mir. . . . .
Der Unterschied zwischen Bind und den beiden anderen Brüdern besteht darin, dass es keine Funktion nennt, sondern eine neue Funktion zurückgibt. In ähnlicher Weise gibt es auch diesen Zeiger und Parameter an. Die Methode zur Angabe von Parametern ist das gleiche wie Call und enthält einzeln.
Lassen Sie uns ein letztes Beispiel haben:
var ShoppingCart = (function () {var _calculatePrice = function () {return this.price * this.amount;}; return {calculatePrice: _calculateprice}}) (); var goods = {name: 'hammer', price: 2}; coppingcart.calculateprice.call (CALLCULTE.CALL (GARS);Das endet. !
Das obige ist der gesamte Inhalt von Bewerber, Anruf und Binden in JavaScript, das Ihnen vom Editor vorgestellt wurde. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!