我在字符串变量中定义了一个javascript对象:
const str = "{a:1}";
我想知道将其转换为javascript对象的最佳方法是什么。我进行了很多搜索,但发现的所有内容都是使用JSON.parse
或JSON.stringify
来转换字符串。但是此字符串中的棘手部分是它不是JSON对象。 a
未引用。我已经尝试过以下方法,但是它不会将其解析为对象:
JSON.parse(JSON.stringify(str))
我知道我可以手动解析字符串,但是我正在寻找一种更通用的解决方案,该支持解析所有可能的javascript对象字符串。
答案 0 :(得分:0)
var obj = eval(str);
请注意,使用eval
会对性能和安全性产生影响。
如果您不控制str的内容,即它是用户输入或来自您不信任的服务器,则存在风险。
此外,JavaScript运行时会在运行时优化代码,但在设计eval
时通常会禁用许多优化。
尝试将评估语句包装在一个自定义函数中,该函数接收传递给eval
的变量:
(function(s) {
return eval(s);
}(str));
它可以确保创建一个闭包来隔离eval
,从而减轻其潜在影响。
最后,请不要接受我刚才所说的任何事情,这是绝对的真理:请确定是否使用eval对代码进行基准测试。