Heim  >  Artikel  >  Web-Frontend  >  Codebeispiel der Bind-Methode in JavaScript

Codebeispiel der Bind-Methode in JavaScript

不言
不言nach vorne
2019-03-11 16:27:342508Durchsuche

Dieser Artikel enthält Codebeispiele zur Bind-Methode in JavaScript. Freunde in Not können darauf verweisen.

Anrufen, bewerben und Neues wurde bereits umgesetzt. Bind ist übrigens heute auch implementiert.
Zuallererst:

  1. Die Bind-Methode gibt eine daran gebundene Funktion zurück, und die Funktion wird nicht ausgeführt und muss manuell aufgerufen werden. (Aus dieser Sicht ist die Bind-Funktion eine Funktion höherer Ordnung und unterscheidet sich von den Call- und Apply-Methoden.)
  2. Die Bind-Methode kann dies binden und Parameter übergeben. Beachten Sie, dass dieser Parameter mehrmals übergeben werden kann.
  3. Wenn die durch bind gebundene Funktion neu ist, ändert sich zu diesem Zeitpunkt der this-Zeiger. Dies ist zu diesem Zeitpunkt die Instanz der aktuellen Funktion.
  4. Die Eigenschaften und Methoden des Konstruktors sind in jeder Instanz verfügbar.

ok, der obige Code~

Function.prototype.mybind = function(context){
    let that = this;
    let args1 = Array.prototype.slice.call(arguments,1);
    let bindFn = function(){
        let args2 = Array.prototype.slice.call(arguments);
        return that.apply(this instanceof bindFn?this:context,args1.concat(args2)); 
    }
    let Fn = function(){};
    Fn.prototype = this.prototype;
    bindFn.prototype = new Fn();
    return bindFn;
}

Besorgen Sie sich zuerst den ersten übergebenen Parameter args1 und fangen Sie ihn hier ab, da der erste Parameter dieser ist. Als nächstes wird eine Funktion bindFn deklariert, in der der zweite übergebene Parameter args2 abgerufen und dessen Ausführung zurückgegeben wird. Das „das“ ist hier die ursprüngliche Funktion. Achten Sie beim Ausführen der ursprünglichen Funktion und beim Binden der ursprünglichen Funktion auf „dies“. Wenn dies eine vom Konstruktor bindFn new erzeugte Instanz ist, muss dies hier die Instanz selbst sein. Im Gegenteil, es ist dieser (Kontext), der von der Bind-Methode übergeben wird. Verbinden Sie abschließend die über concat() erhaltenen Parameter zweimal und übergeben Sie sie, um so die ersten drei Elemente zu realisieren.
Letztes Element: Die Eigenschaften und Methoden des Konstruktors sind in jeder Instanz verfügbar. Hier wird eine Zwischenfunktion Fn verwendet, um die Prototypenkette zu verbinden. Der Prototyp von Fn ist gleich dem Prototyp davon. Fn und this verweisen auf dasselbe Prototypobjekt. Der Prototyp von bindFn entspricht der Instanz von Fn. Das __proto__ der Fn-Instanz verweist auf den Prototyp von Fn. Das heißt, der Prototyp von bindFn zeigt auf denselben Prototyp wie dieser und zeigt auf dasselbe Prototypobjekt. Zu diesem Zeitpunkt haben Sie Ihre eigene Bindungsmethode implementiert.
Der Code ist geschrieben, testen wir ihn~

Function.prototype.mybind = function(context){
Lass das = dies;
Lassen Sie args1 = Array.prototype.slice.call(arguments,1);
Sei bindFn = function(){
Lassen Sie args2 = Array.prototype.slice.call(arguments);
        return that.apply(this instanceof bindFn?this:context,args1.concat(args2));
}
Sei Fn = function(){};
Fn.prototype = this.prototype;
bindFn.prototype = new Fn();
Return bindFn;
}

sei obj = {
Name:'Tiger'
}

Funktion fn(Name,Alter){
This.say = 'Woof woof~';
console.log(this);
Console.log(this.name+'raised one'+name+','+age+'years old');
}

/**Zum ersten Mal werden Parameter übergeben*/
let bindFn = fn.mybind(obj,'

Das obige ist der detaillierte Inhalt vonCodebeispiel der Bind-Methode in JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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