Javascript 如何在JS中将字符串转换为函数原型?

Javascript 如何在JS中将字符串转换为函数原型?,javascript,angularjs,Javascript,Angularjs,因此,我有一个js对象,其中包含以下示例键值对 var serial = { open: function(a, b) { do something.. }, close: function (a,b) { do something } } 如上所示,键的值是js函数。由于某些要求,我不得不将整个对象转换为字符串。我使用以下代码将其转换为字符串: var json = JSON.stringify(window.serial, function(key,

因此,我有一个js对象,其中包含以下示例键值对

var serial = { 
 open: function(a, b) { 
       do something..
},

close: function (a,b) { 
       do something
}

}
如上所示,键的值是js函数。由于某些要求,我不得不将整个对象转换为字符串。我使用以下代码将其转换为字符串:

var json = JSON.stringify(window.serial, function(key, value) {
    if (typeof value === 'function') {
        return value.toString();
    } else {
        return value;
    }   
});

如何将字符串转换回函数原型并存储在同一obj中?

eval
将字符串转换回函数
var str=“function fn(){console.log('loggin function')}”;
eval(str);

fn()
听起来像个XY问题:为什么需要将函数存储为字符串?@Terry由于某些要求/复杂性,听起来像是一个奇怪的要求。通常,只发送数据,不发送函数或方法,然后使用数据初始化对象。对象知道它需要的方法。@krishnanspace
return”“
也会将函数转换为字符串,而不会出现任何问题。但是一个不能被转换回函数的字符串实际上执行您想要的操作。当然,它也可以简单地转换为空函数。
eval()
几乎不应该被使用。@Utkanos实际上,
eval
是将字符串转换为可执行代码的明智选择。@Bergi我同意你的看法。然而,问题是,大多数时候我都没有看到将函数转换为字符串的合理理由。很多时候,这是一个XY问题,有人试图解决,并决定“嘿,我可以把它变成一个字符串”,当有更好的选择。然而,这并不是说你不想把文本转换成可执行代码。例如,您可以序列化功能并通过websocket发送推送功能,以便在不同的机器上执行。这是一种简单而有效的方法来实现分布式计算。