Когда вы вызываете функцию без заданного контекста, когда вы вызываете look()
, ключевое слово this
внутри этой функции будет глобальным объектом.
В вашем случае вы можете передать только ссылку на вашу функцию, и она будет работать правильно:
$("input").focus(look);
Кроме того, может быть полезно знать, что ключевое слово this
не является полностью неявным и может быть задано явно с помощью функций call
и apply
:
function test(arg1){
alert(this + arg1);
}
test.call('hello ', 'world'); // will alert 'hello world'
И что контекст (ключевое слово this
) устанавливается неявно в следующих случаях:
1- При вызове функции, которая является членом объекта, например ::
obj.myFunc(); // 'this' will refer to obj
2- При вызове функции с оператором new
:
var test = new Func(); // 'this' will refer to a new object
3- При вызове функции, не связанной с каким-либо объектом:
foo();
// or
(function () {})(); // 'this' will be the global object