有没有办法获取JavaScript字符串,如
"program[one] = js"
并在此字符串上运行并使其可访问,以便在我键入
时console.log(program.one);
我会得到js
答案 0 :(得分:0)
您可以使用eval
方法(虽然不是强烈推荐)并执行以下操作:
var program = {};
var str = "program['one'] = 'js'";
eval(str);
console.log(program.one);
答案 1 :(得分:0)
假设您只想允许字符串在program
中写入,并且唯一有效的字符串格式为program[name] = value
,则有一个非邪恶的解决方案:
var program = {};
var input = "program[one] = js";
var patt = /program\[(.*?)\] = (.*)/;
var result = patt.exec(input); // Array [ "program[one] = js", "one", "js" ]
program[result[1]] = result[2];
console.log(program.one); // js
编辑:如果您需要支持引号并结束分号,则可能需要调整正则表达式(patt
)。
使用eval是considered harmful。如果你不能控制传递给它的字符串 - 通常就是这种情况 - 它可以运行任何允许代码注入的代码。 不,不要假装你可以做我上面为任意程序做的事情。另一方面,如果你控制了字符串,你就不需要eval - 尽管如果你使用metaprogramming by code generation in javascript我接受它可能是实用的。
答案 2 :(得分:0)
你正在考虑这个问题。
你想要的是一些代表你可以解析的JS对象的JSON。
var json = '{"program":{"one": "js"}}';
var obj = JSON.parse(json);
obj.program.one // js
即使你没有考虑到这一点,你做需要回过头来解决为什么你需要使用像“program [one] =这样的字符串= js“因为这种方法是错误的,只会导致心痛。