Heim >Web-Frontend >js-Tutorial >Anwendungsbeispielanalyse der JS-Funktion this_javascript skills
Das Beispiel in diesem Artikel beschreibt die Verwendung der JS-Funktion this. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:
Beim Schreiben von Funktionen in js wird dies häufig verwendet. Was genau ist das? Dies ist ein Schlüsselwort und ein Zeiger, der auf den Ausführungsumgebungsbereich zeigt, auch Kontext genannt.
Lassen Sie uns zunächst über Funktionen sprechen. Mein persönliches Verständnis ist, dass Funktionen Codeblöcke sind, die in der Sprache wiederholt aufgerufen werden.
Wenn in JS einer Eigenschaft eines Objekts eine Funktion zugewiesen wird, wird diese als Methode
bezeichnet
Zum Beispiel:
var m={}; m.title='title'; m.show=function(){ alert(this.title) } m.show()
Ist der Aufruf der Funktion als Methode des Objekts m
In diesem Fall zeigt dies auf das Objekt m.
Der direkte Aufruf des Funktionsnamens wird als Funktion bezeichnet:
var a=1212; function show(){ alert(a)//1212 } show()// 1212
In der globalen Umgebung können globale Variablen als Eigenschaften von Fenstern verstanden werden, und globale Funktionen sind Methoden von Fenstern
Schauen Sie sich das Beispiel unten an:
var m ={}; m.id='mmm'; m.show=function(){ alert(this.id); } var a={}; a.id='aaa'; a.show=m.show; a.show(); //aaa a.show=m.show; 先理解这句话,因为函数是个对象, m.show=function(){ alert(this.id) }
Dieser Ausdruck entspricht der gleichzeitigen Referenzierung von
durch a.show und m.show
function(){ alert(this.id) }
entspricht tatsächlich
a.show=function(){ alert(this.id) }
Wenn Sie also a.show() aufrufen, zeigt dies auf das a-Objekt,
Schauen Sie sich die folgende Kastanie an
var m ={}; m.id='mmm' m.show=function(){ alert(this.id) } var a={} a.id='aaa' a.show=function(){ m.show() }; a.show(); //mmm
Der Aufruf von a.show() entspricht also dem Aufruf der m.show()-Methode, sodass dies auf das m-Objekt verweist.
Sehen Sie sich das folgende Beispiel noch einmal an. Ich verstehe es zunächst immer noch nicht.
var color='red'; var app = {}; app.color="green"; app.paint=function(node){ node.style.color=this.color; alert(this.color); } function findNode(callback){ var btn =document.querySelector('.btn'); callback(btn);//传进来, } findNode(app.paint); alert(this.color); //red 而不是green
Wenn Funktionsparameter übergeben werden, werden Parameter als Wert und nicht als Referenz übergeben
Wenn also findNode(app.paint); übergeben wird, ist es tatsächlich
function(node){ node.style.color=this.color; alert(this.color); }
Referenz, und da findNode global definiert ist, verweist dies auf WINDOW OR UNDEFINED;
Informationen zur Übergabe von Parametern: Übergeben Sie sie als Wert
function show(a){ alert(a) }
var b=10; show(b)//alert(10);
var c ={}; c.prop=true; var showProp=function(obj){ obj.prop=false } showProp(c); //c.prop = false
Tatsächlich werden die oben genannten Parameter immer noch als Wert übergeben. Wenn showProp(c) c an die Funktion übergibt, entspricht c tatsächlich einer Referenz. Obj.prop=false entspricht der Änderung des referenzierten Objekts in {prop: falsch 🎜>
Sehen Sie sich das folgende Beispiel an
var c ={}; c.prop=true; var showProp=function(obj){ obj = new Object(); obj.prop=false return obj; } showProp(c); alert(c.prop); //trueDas eingehende Objekt wurde hier geändert. Wenn Parameter gemäß der Funktion als Referenz übergeben werden, werden die Änderungen in der Funktion auf jeden Fall extern widergespiegelt
Ich hoffe, dass dieser Artikel für das JavaScript-Programmierdesign aller hilfreich sein wird.