//--------
foo();
// "global"
obj1.foo();
// "obj1"
foo.call( obj2 );
// "obj2"
new foo();
// undefined
____________________________________________________________________
Есть четыре правила того, как устанавливается `this`, и они показаны в этих
четырех последних строках кода.
1. `foo()` присваивает в `this` ссылку на глобальный объект в нестрогом режиме.
В строгом режиме, `this` будет `undefined`, и вы получите ошибку при доступе к
свойству `bar`, поэтому `"global"` — это значение для `this.bar`.
2. `obj1.foo()` устанавливает `this` в объект `obj1`.
3. `foo.call(obj2)` устанавливает `this` в объект `obj2`.
4. `new foo()` устанавливает `this` в абсолютно новый пустой объект.
Резюме: чтобы понять, на что указывает `this`, вам нужно проверить, как именно
вызывалась функция. Это будет один из тех четырех вышеописанных способов,
таким образом вы поймете, что будет в `this`.
**Примечание:** Более детальная информация о ключевом слове `this` есть в
Do'stlaringiz bilan baham: