javascript eval и оценка объекта - PullRequest
10 голосов
/ 25 октября 2010

У меня есть часть инфраструктуры отладки, которая должна быть в состоянии запускать объекты eval времени.

В частности, если у меня есть строка, подобная этой "{a: 1, b:2}", она должна оценить ее как объект с членамиa и b с этими значениями.Однако, если я сделаю eval("{a: 1, b:2}"), мне кажется, что он оценивается как утверждение и что-то говорит о недопустимом ярлыке.

Я взломал его так, что он оценивается так:* который, кажется, работает, но кажется ужасным взломом.Любые предложения о том, как сделать это лучше?

(Кстати, я знаю об опасностях eval, но это часть инфраструктуры отладки, которую не увидят реальные пользователи.)

1 Ответ

22 голосов
/ 25 октября 2010

Вы можете сделать это, используя (), чтобы он анализировал его как объект, а не как оператор, например:

eval("(" + str + ")");

Хотя сначала вы должны использовать JSON.parse(), если браузерподдерживает его.

...