Как запустить функцию по названию из массива
У меня есть массив с названиями функций. Эти функции открывают или закрывают всплывающие окна на сайте. Так вот когда открывается окно с помощью unshift в начала массива добавляется название нужной функции. То есть окно открыто. Когда пользователь нажимает кнопку назад в браузере, то вызывается функция с индексом 0 из моего массива и соответственно окно закрывается и название функции удаляется из массива. Это всё прекрасно работает и вопрос не в этом. А вопрос в том, что я могу получить название функции из массива, но не могу её запустить не используя eval Читал много статей где пишут, что eval не безопасен. Подскажите чем заменить eval, чтобы было безопаснее)
Мой код:
// Массив с названиями функций
var navWindowArr = [
func1(),
func2(),
func3()
]
// При нажатии кнопки Назад в браузере срабатывает функция
addEventListener("popstate", function() {
var result = eval(navWindowArr[0]); // Запускаю функцию из массива
}, false);
Ответы (1 шт):
Достаточно ссылок на функции
function func1() {
console.log(1)
}
function func2() {
console.log(2)
}
function func3() {
console.log(3)
}
let arr = [func1, func2, func3]
arr[0]();
arr[1]();
arr[2]();