В основном я пытаюсь понять и изучить принцип работы этого ключевого слова в JavaScript.
Насколько я понимаю, «это» относится к объекту (функции), который находится внутри в этот момент.
Итак, веря в это, я хотел проверить вывод простого кода ниже:
<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>
И его вывод меня смущает. Потому что в функции inner () this.Son выводит увеличенное целочисленное значение Son. Но я ожидаю, что this.Father потерпит неудачу, потому что inner () не имеет атрибут .Father. Но вместо того, чтобы генерировать исключение, оно предупреждает значение this. Father -Which, кажется
- строка выше 'this' ссылается на inner ()
- и следующая строка this указывает Outer ()
На данный момент у меня есть 2 вопроса на самом деле:
Всегда ли ключевое слово "this" относится к
корпус внешнего прицела даже внутри внутренних функций?
И без каких-либо экземпляров, объявленных ключевым словом this, что в методе? (Я имею в виду, не имея что-то вроде var myFamily = new Outer()
)
Спасибо
Бурак Оздоган