Javascript 用这句话重写一篇文章

Javascript 用这句话重写一篇文章,javascript,node.js,dom,browser,Javascript,Node.js,Dom,Browser,为什么我不能用 new Function(`with(this) { return ${$eval}}`).call({ moment, ...context }); ): 我做错什么了吗?我需要这样做来移动代码 另外,如果我可以重写这个没有与这将是伟大的,但不知道如何!我不确定它从作用域链中得到了什么,因为我没有编写代码,但它非常复杂。传递给新函数的函数体只是一个字符串。您应该声明相应的参数并将其传递给创建的函数,而不是尝试将值插入字符串中(这通常是不可能的)

为什么我不能用

new Function(`with(this) { return ${$eval}}`).call({
        moment,
        ...context
});
):

我做错什么了吗?我需要这样做来移动代码


另外,如果我可以重写这个没有与这将是伟大的,但不知道如何!我不确定它从作用域链中得到了什么,因为我没有编写代码,但它非常复杂。

传递给
新函数的函数体只是一个字符串。您应该声明相应的参数并将其传递给创建的函数,而不是尝试将值插入字符串中(这通常是不可能的):

  const that = this;
  const ret = new Function(`with(${that}) { return ${$eval}}`).call({
    moment,
    ...context
  });
newfunction('that','with(that){return${$eval}}}')
表示函数

const ret = new Function('that', `with (that) { return ${$eval} }`)({
  moment,
  ...context
});

你能在代码周围发布更多的上下文吗?你想干什么?是的,您应该真正避免使用
eval
新功能

(function (that) {
    with (that) {
        return /* … code from $eval … */
    }
})