Объекты и их методы. 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, время: 16:56. |