Im Grunde versuche ich zu verstehen und lerne das Arbeitsprinzip des 'this' in JavaScript.'Dieses' Schlüsselwort bezieht sich auf welches Objekt innerhalb einer Funktion innerhalb einer anderen Funktion?
Soweit ich verstehe, bezieht sich "dies" auf das Objekt (Funktion), das es in diesem Moment ist.
Also, von diesem Glauben, wollte ich unter den Ausgang des einfachen Code testen:
<body>
<input type="button" value="Add Age" onclick="Outer()" />
<script type="text/javascript">
function Outer(){
if(typeof this.Father == 'undefined')
{
this.Father = 0;
}
this.Father+=2;
alert(this.Father);
inner();
function inner(){
if(typeof this.Son== 'undefined')
{
this.Son = 0;
};
this.Son++;
alert(this.Son);
alert(this.Father);
};
};
</script>
</body>
Und mir seine Ausgabe verwirrt. Denn in der Funktion inner() gibt this.Son den inkrementierten Ganzzahlwert des Sohns aus. Aber ich erwarte das. Vater scheitert, weil inner() kein .Father-Attribut hat. Aber anstatt eine Ausnahme zu werfen, alarmiert es den Wert von this.Father -Welche scheint
- eine Zeile über ‚this‘ bezieht sich innere()
- und folgende Zeile ‚this‘ bezieht sich Outer()
an diesem Punkt habe ich 2 Fragen in meinem Kopf actualy:
Does ‚this‘ Schlüsselwort bezieht sich immer auf das Gehäuse des äußeren Umfang auch in den inneren Funktionen?
Und ohne irgendwelche Instanzen deklariert 'dieses' Schlüsselwort verweist auf was in der Methode? (Ich meine, ohne etwas lik
var myFamily = new Outer()
mit)
Danke,
burak Ozdogan
Danke, es ist wirklich nützliche Informationen. können Sie mehr über Aufrufmuster in diesem Artikel finden: http://mcarthurgfx.com/blog/article/4-ways-functions-mess-with-this – pencilCake
Und dieses ist auch ziemlich erklärend: Funktionsaufruf in JavaScript - Kontexte erneut besucht - http://msmvps.com/blogs/luisabreu/archive/2009/08/24/funktions-invocation-in-javascript-contexts-revisited.aspx – pencilCake