Дело в том, что this
привязан к глобальному объекту внутри вызовов setTimeout.Отсюда следует, что и
setTimeout($('a').hide, 2000)
и
setTimeout(function(){ $('a').hide(); }, 2000)
будут вызывать методы $('a').hide
, но с разными значениями для this
(window
в первом случае и $('a')
во втором).
Здесь - более подробная информация о значении this
в зависимости от способа вызова функции.