После выполнения некоторых исследований и тестирования единственная правильная реализация:
setTimeout(yourFunctionReference, 4000, param1, param2, paramN);
setTimeout передаст все дополнительные параметры вашей функции, чтобы их можно было обработать там.
анонимная функция может работать для очень простых вещей, но в пределах экземпляра объекта, где вы должны использовать «это», нет способа заставить его работать. Любая анонимная функция изменит «это», чтобы указать на окно, поэтому вы потеряете ссылку на объект.