Я столкнулся с ситуацией, когда мне нужен доступ к объекту javascript с сервера. Сервер возвращает имя строки функции или объекта и на основе других метаданных я буду оценивать объект по-разному.
Первоначально я оценивал (eval([string])
), и все было в порядке. Недавно я обновлял функцию, чтобы не использовать eval
для обеспечения спокойствия в безопасности, и я столкнулся с проблемой с объектами/функциями с именами.
В частности, я попытался заменить eval([name])
на window[name]
для доступа к объекту через синтаксис квадратной скобки из глобального объекта vs eval
.
Но у меня возникла проблема с объектами с именами, например:
var strObjName = 'namespace.serviceArea.function';
// if I do
var obj = eval(strObjName); // works
// but if I do
var obj = window[strObjName]; // doesn't work
Может ли кто-нибудь придумать хорошее решение, чтобы избежать использования eval
с именами строк?