Heim > Artikel > Web-Frontend > Dies weist in Js auf das Problem von apply().call(),bind() hin
Grund zur Notiz: Die Popularität von JavaScript ist unaufhaltsam geworden. Die abgeleiteten AngularJs, Node.js und BootStrmp haben ihre Vorteile in der Backend-Entwicklung für kleine und mittlere Unternehmen zunehmend verloren Das kann sich ganz auf Erfahrung verlassen. Als .Net-Programmierer seit drei Jahren habe ich zutiefst das Gefühl, dass es eigentlich Angst ist, dem Fortschritt der Zeit auszuweichen. Das Leben erfordert Leidenschaft und Motivation.
Text:
1. Was machen apply().call() und bind()?
Diese drei sollen ändern, worauf dies in der Methode hinweist
2. Was ist das?
Dies bezieht sich auf das Ausführungsobjekt der Methode, die Sie gerade aufrufen. wie zum Beispiel die setTimeout-Methode. Die Ausgabe davon
1 setTimeout(function(){ 2 console.log(this) 3 },1000)
ist:
Window {external: Object, chrome: Object, document: document, Alax: Object, a2: Object…}
weil setTimeout ist vollständig aufgerufen, wenn Window.setTimeout Es gehört zu einer Methode des Window-Objekts.
Definieren Sie ein anderes Objekt
var Alax={ name:'Alax', age:27, fuc:function(){ return this.age; } }
Logischerweise sollte die Verwendung von console.log (Alax.fun) 27 ausgeben, aber die tatsächliche Situation ist undefiniert. welches Warum? Denn wenn es außerhalb des Alax-Objekts aufgerufen wird, ist das eigentliche Objekt Window und Window enthält kein Altersattribut, was bedeutet, dass sich dieser Zeiger geändert hat und neu angegeben werden muss. Denken Sie daran, zu warten, bis das Konzept fertig ist, bevor Sie vergleichen, was Sie denken
3. Der Unterschied zwischen call, apple und bind
1. Parametervergleich
Das Parameterformat von call ist (thisvalue,arg1)
apply It is (thisvalue,[arg1,ar2...])
Das Parameterformat von bind ist (thisvalue,arg1,ar2...)
Thisvalue bezieht sich auf den zu übergebenden this-Zeiger , Die folgenden Parameter sind optional und entsprechen eins zu eins den Parametern der Methode. Wenn sie übergeben werden, können sie mithilfe von Argumenten abgerufen werden
2. Vergleich der Rückgabeergebnisse
Call und Apple beziehen sich auf die Übergabe aller Parameter an arguments und geben das Aufrufergebnis direkt zurück
„bind bedeutet, einen eingehenden Wert zurückzugeben und nach Ausführung der Methode einen neuen zurückzugeben. Die Funktion muss hinzugefügt werden ( ) zum Aufrufen von
Zusammenfassung: Die obige Aufrufmethode kann
console.log((Alax.fuc).call(Alax)) console.log((Alax.fuc).apply(Alax)) console.log((Alax.fuc).bind(Alax)())
Parameteraufruf anhängen
Alax={ name:'Alax', age:27, fuc:function(num){ this.age+=num return this.age; } } console.log((Alax.fuc).call(Alax,1)) console.log((Alax.fuc).apply(Alax,[1])) console.log((Alax.fuc).bind(Alax)(1))
Das obige ist der detaillierte Inhalt vonDies weist in Js auf das Problem von apply().call(),bind() hin. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!