Heim  >  Artikel  >  Web-Frontend  >  Dies weist in Js auf das Problem von apply().call(),bind() hin

Dies weist in Js auf das Problem von apply().call(),bind() hin

一个新手
一个新手Original
2017-10-23 10:02:371454Durchsuche

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn