teo*_*one 3 javascript string type-conversion ecmascript-6
假设我有这样的代码:
var cfg = {
config: {
fields: {
name: {
type: 'text'
},
age: {
type: 'number'
}
},
actions: [
{
label: 'Print',
cb: (model) => {
console.log(model);
}
}
]
},
data: {name: 'Jhon', age: 23}
}
Run Code Online (Sandbox Code Playgroud)
我想将其转换为字符串(以让用户编辑它),然后将其转换回可执行代码,知道如何实现这一点吗?
我尝试使用JSON.stringifyandJSON.parse但这当然会剥夺这些功能。.toStringreturns "[object Object]",迭代对象并.toString在值是字符串、函数或数字时进行调用,还有其他想法吗?
Function构造函数将代码作为字符串, eval和其他一些函数也是如此。但是,如果可以以任何方式避免,请不要将代码转换为字符串或向后转换,因为这样做可能会遇到安全问题、调试能力以及许多其他问题。
将代码转换为字符串有点烦人,因为您需要确保不重新声明变量,并且新上下文中的所有内容在语法上都是正确的,例如请注意,obj的f属性在声明中再次命名,因为它稍后被赋予eval这将它放置在需要名称的全局范围内。
let obj = { f: function f() { let stuff = "hi"; console.log("hi"); } };
let code = obj.f.toString();
console.log(code);
eval(code);
f();Run Code Online (Sandbox Code Playgroud)
请注意,JSON.stringify有一个可选replacer参数,可用于自定义流程。
我再次强烈建议尽可能避免任何代码与字符串之间的转换,在所有正常情况下,这是不需要的,也不应该这样做。
| 归档时间: |
|
| 查看次数: |
8375 次 |
| 最近记录: |