Объекты и их методы. setTimeout
Задача:
Создайте объект coffeeMachine со свойством message: ‘Your coffee is ready!’ и методом start(), при вызове которого – coffeeMachine.start() – через 3 секунды появляется окно с сообщением, записанным в свойстве объекта message. мой JS:
var coffeeMachine={
message: 'Your coffee is ready!',
start: function(){
return timer=setTimeout(function() { alert(this.message) }, 3000);
},
}
coffeeMachine.start();
что самое интересное: 1. когда пишу так alert(coffeeMachine.message)- выводит мне нужное сообщение; когда так alert(this.message) - undefined. 2. при этом, если так:
start: function(){
return timer=setTimeout(function() { alert(this.message) }, 3000);
},
то мне выводит мое сообщение,но в консоле выпадает "timer is not defined" ; Если я передаю аргумент "timer" в функцию или вообще его убираю из тела функции, то ничего не работает. Подскажите что не так |
start: function() {
var self = this;
setTimeout(function() {
alert(self.message);
}, 3000);
}
или
start: function() {
setTimeout((function() {
alert(this.message);
}).bind(this), 3000);
}
|
Спасибо. Уже сама разобралась))
|
еще есть вариант:
start: function() {
setTimeout(() => {
alert(this.message);
}, 3000);
}
Но в старых браузерах работать не будет |
| Часовой пояс GMT +3, время: 21:08. |