Поскольку у нас теперь ES6, я думаю, нам нужен еще один ответ:
Используйте функцию стрелки:
function a() {
this.b = 1;
this.set = setInterval(() => {console.log(this.b);}, 200);
}
Функции стрелки, противоположные нормальным функциям, не имеют контекст this
самостоятельно. Это означает, что у вас есть доступ к внешнему this
.
Испытанный эти затруднения также из-за формы, которая ajax-отправленный и когда это завершилось, сделала (верный) window.location.reload. Safari 13.0.3 работал бы в первый раз после обновления страницы руководства (казался последовательным), затем быть "Отказавшим для загрузки ресурса: сетевое соединение было потеряно". примерно 2 из 3 щелчков.
Измененный клиент на:
использование ajax-добирается вместо сообщения (со значением параметрического усилителя уникального запроса каждый раз)
на завершении, устанавливает таймер так, чтобы (верный) window.location.reload не был сделан в ajax обработчике завершений
, Пользователь сообщает, что работал, не уверенный который из тех изменений или обоих.
Hope это помогает кому-то...