gpt4 book ai didi

Javascript:转换代码字符串并返回

转载 作者:行者123 更新时间:2023-11-30 15:53:08 24 4
gpt4 key购买 nike

假设我有这段代码:

var cfg = {
config: {
fields: {
name: {
type: 'text'
},
age: {
type: 'number'
}
},
actions: [
{
label: 'Print',
cb: (model) => {
console.log(model);
}
}
]
},
data: {name: 'Jhon', age: 23}
}

我想将它转换为字符串(让用户编辑它),然后将其转换回可执行代码,知道如何实现吗?

我尝试使用 JSON.stringifyJSON.parse 但这当然会删除函数。 .toString 返回[object Object]",迭代对象并调用.toString,当值是一个字符串,函数或数字是一种可能性,还有其他想法吗?

最佳答案

Function构造函数将代码作为字符串,eval 也是如此和其他几个。但是,如果可以任何方式避免,请不要将代码转换为字符串和向后转换,因为安全问题、调试能力以及这样做时可能遇到的许多其他问题。

将代码转换为字符串有点烦人,因为您需要确保您没有重新声明变量并且新上下文中的所有内容在语法上都是正确的,例如请注意,objf 属性在声明中再次命名,因为它稍后被提供给 eval,后者将其置于全局范围内它需要一个名字。

let obj = { f: function f() { let stuff = "hi"; console.log("hi"); } };
let code = obj.f.toString();
console.log(code);
eval(code);
f();

请注意 JSON.stringify有一个可选的 replacer 参数,可用于自定义流程。

我再次强烈建议尽可能避免任何代码到/从字符串转换,在所有正常情况下,这是不需要也不应该做的。

关于Javascript:转换代码字符串并返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39003401/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com