Когда функция присоединяется к объекту и вызывается:
function f() { return this.x; }
var o = {x: 20};
o.func = f;
o.func(); //evaluates to 20
this
относится к объекту, для которого функция была вызвана как метод. Это эквивалентно f.call(o)
.
Когда функция вызывается не как часть объекта, this
относится к глобальному объекту. Как проверить, вызывается ли функция из необъектного контекста? Есть ли стандартное ключевое слово для доступа к глобальному объекту? Это единственный способ сделать что-то подобное?
globalobj = this;
function f() { if (this == globalobj) doSomething(); }
Примечание: здесь я не имею в виду конкретный вариант использования - на самом деле я спрашиваю об этом точном механизме.