Во-первых, выражения литерального свойства объекта javascript оцениваются во время создания экземпляра объекта. myself
будет тем, что захватит этот селектор в это время, что, вероятно, ничто. Свойство myself
должно быть функцией, если вы хотите, чтобы оно возвращало значение $('.message')
во время вызова. Как следствие, вам также придется изменить все виды использования на вызовы функций.
Во-вторых, во время выполнения обратного вызова setTimeout this
привязывается к объекту окна, поэтому вам необходимо правильно его квалифицировать:
wyr.message = {
myself: function() { return $('.message'); },
init: function() {
if(this.myself().is(':visible')){
setTimeout(this.close, 5000);
}
},
close: function(){
message.myself().fadeOut(1200,function(){
$(this).remove();
});
}
};
(Обратите внимание, что при исчезновении тайм-аута это исчезнет и удалит все, что соответствует селектору.)