Zasadniczo staram się zrozumieć i nauczyć się zasady działania tego słowa kluczowego w JavaScript."to" słowo kluczowe odnosi się do jakiego obiektu wewnątrz funkcji wewnątrz innej funkcji?
O ile rozumiem "to" odnosi się do obiektu (funkcji), że jest w tym momencie.
Więc wierząc tym, chciałem przetestować wyjście prostego kodu poniżej:
<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>
a jego wyjście myli mnie. Ponieważ w funkcji inner(), This.Son generuje zwiększoną liczbę całkowitą Son. Ale spodziewam się tego. Ojciec się nie powiódł, ponieważ inner() nie ma atrybutu .Father. Jednak zamiast wyrzucać wyjątek informuje, że wartość this.Father-co wydaje
- linię powyżej „ten” odnosi wewnętrzną()
- i następującą linię „ten” odnosi zewnętrznej()
w tym momencie mam 2 pytania w mojej głowie właściwie:
oznacza „to” słowo kluczowe odnosi się zawsze do zewnętrzną obudowę zakres, nawet wewnątrz funkcji wewnętrznych?
I bez zadeklarowanych żadnych wystąpień "to" słowo kluczowe odnosi się do tego, co w metodzie? (Mam na myśli bez czegoś lik
var myFamily = new Outer()
)
Dzięki
burak Özdogan
Dzięki, to naprawdę przydatne informacje. można znaleźć więcej informacji na temat wzorców wywoływania w tym artykule: http://mcarthurgfx.com/blog/article/4ways-functions-mess-with-this – pencilCake
Ten jest również dość wyjaśniający: wywołanie funkcji w JavaScript - rewidowane konteksty - http://msmvps.com/blogs/luisabreu/archive/2009/08/24/function-invocation-in-javascript-contexts-revisited.aspx – pencilCake