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:
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!