Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将对象方法作为响应节点发送_Javascript_Html_Node.js_Express - Fatal编程技术网

Javascript 将对象方法作为响应节点发送

Javascript 将对象方法作为响应节点发送,javascript,html,node.js,express,Javascript,Html,Node.js,Express,我的要求是使用express发送一个对象方法作为响应。这样我就可以在前端创建动态onClick js代码 const data = { message: "Hi", click: () => { console.log("Hello world"); } }; res.send(data); 我试图发送它,但该方法无法发送。前端JS中上述示例代码的日志如下所示 {message: "Hi"} 我的解决方法是将整个函数作为字符串发送,然后使用函数构造函数来解析字符串。

我的要求是使用express发送一个对象方法作为响应。这样我就可以在前端创建动态onClick js代码

const data = {
  message: "Hi",
  click: () => {
    console.log("Hello world");
  }
};
res.send(data);
我试图发送它,但该方法无法发送。前端JS中上述示例代码的日志如下所示

{message: "Hi"}
我的解决方法是将整个函数作为字符串发送,然后使用函数构造函数来解析字符串。它工作了,但我读了其他论坛条目,其中说将字符串解析为函数是非常糟糕的做法


请建议我解决这个问题的方法。

您基本上有两个选择:

  • 按原样使用
    函数
    构造函数。如果您可以信任将字符串转换为代码的用户,那么这很好。当您不需要将字符串转换为函数时(例如,有更好的方法),或者使用来自您不信任的源的字符串时,您不应该使用它

  • 根本不发送动态处理程序。相反,在包含在页面中的脚本中有一组标准处理程序:

    const handlers = {
        sayHi() {
            alert("Hello world");
        },
        doSomething() {
            // ...
        },
        doSomethingElse() {
            // ...
        }
    };
    
    并返回处理程序的名称(
    “sayHi”
    “doSomething”
    “doSomethingElse”
    )而不是处理程序的代码。然后通过
    handlers[name]
    使用处理程序


  • 您基本上有两种选择:

  • 按原样使用
    函数
    构造函数。如果您可以信任将字符串转换为代码的用户,那么这很好。当您不需要将字符串转换为函数时(例如,有更好的方法),或者使用来自您不信任的源的字符串时,您不应该使用它

  • 根本不发送动态处理程序。相反,在包含在页面中的脚本中有一组标准处理程序:

    const handlers = {
        sayHi() {
            alert("Hello world");
        },
        doSomething() {
            // ...
        },
        doSomethingElse() {
            // ...
        }
    };
    
    并返回处理程序的名称(
    “sayHi”
    “doSomething”
    “doSomethingElse”
    )而不是处理程序的代码。然后通过
    handlers[name]
    使用处理程序