Javascript 如何评估一个字符串化的类方法?
我正在序列化函数以通过网络发送它们。然后,他们被从他们的严格形式的另一边处决 我可以这样做:Javascript 如何评估一个字符串化的类方法?,javascript,eval,Javascript,Eval,我正在序列化函数以通过网络发送它们。然后,他们被从他们的严格形式的另一边处决 我可以这样做: function test1() { console.log("test1") } eval(`(${test1})`)() 我也可以这样做: const test2 = function() { console.log("test2") } eval(`(${test2})`)() 这也适用于: const test3 = () => { console.log("test3") } eva
function test1() { console.log("test1") }
eval(`(${test1})`)()
我也可以这样做:
const test2 = function() { console.log("test2") }
eval(`(${test2})`)()
这也适用于:
const test3 = () => { console.log("test3") }
eval(`(${test3})`)()
(所有这些都会产生不同的函数字符串化版本)
但是,此操作失败:
class A {
test4() { console.log("test4") }
}
const a = new A
eval(`(${a.test4})`)()
错误是意外标记{
,因为字符串化方法是test4(){console.log(“test4”)}
,它不是有效的函数声明(既没有命名也没有匿名)
静态方法不能解决问题(相同的结果)
我的问题是:通过网络发送类方法的最佳方式是什么?谢谢我不完全确定为什么会这样,但最后一个示例将使用:
eval(`(${a.test4()})`;
。您可能应该做一些类似于window.allMyCallableStuff={test1:()=>{console.log('test1')}的事情
并且不使用eval,但让varFuncName='test1';window.allMyCallableStuff[varFuncName]();
我可能没有与您尝试执行的操作完全匹配的内容,但您可能可以不使用eval
。