В отличие от такого языка, как Python, метод Javascript забывает, что это метод после его извлечения и передачи в другое место. Вы можете либо
Обернуть вызов метода внутри анонимной функции
Таким образом, доступ к свойству baz
и его вызов происходят одновременно, что необходимо для правильной установки this
внутри вызова метода.
Вам нужно будет сохранить this
из внешней функции во вспомогательной переменной, поскольку внутренняя функция будет ссылаться на другой объект this
.
var that = this;
setInterval(function(){
return that.baz();
}, 1000);
Обернуть вызов метода внутри функции жирной стрелки
В реализациях Javascript, которые реализуют функции для стрелок , можно написать вышеприведенное решение в более сжатой форме, используя синтаксис жирной стрелки:
setInterval( () => this.baz(), 1000 );
Анонимные функции Fat Arrow сохраняют this
от окружающей функции, поэтому нет необходимости использовать трюк var that = this
. Чтобы узнать, можете ли вы использовать эту функцию, обратитесь к таблице совместимости, например , этой .
Использовать функцию привязки
Последняя альтернатива - использовать функцию, такую как Function.prototype.bind или эквивалент из вашей любимой библиотеки Javascript.
setInterval( this.baz.bind(this), 1000 );
//dojo toolkit example:
setInterval( dojo.hitch(this, 'baz'), 100);