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