我试图用对象属性定义一个新函数

时间:2019-05-23 21:44:06

标签: javascript node.js

我正在尝试将函数定义为对象的一部分,并使用相同的对象属性,但出现错误“ SyntaxError:Arg字符串尽早终止参数”

let x = {};
x.str = 'Hello Wor\nld';
x.a = /\s/g;
x.action = new Function(x.str, x.a, 'return ' + x.str + '.replace(' + x.a + ', "")');
console.log(x.action);

1 个答案:

答案 0 :(得分:0)

除了new Function的最后一个参数外,所有参数都应为参数名称(必须为有效的变量名称)-它们中不能有空格或为正则表达式。例如:

new Function('a', 'b', 'return a + b')

结果类似

function(a, b) {
  return a + b

类似地,您当前正在做什么:

function foo(Hello Wor
ld, /\s/g) {
  // ...

语法无效。

制作一个不接受任何参数的函数:

let x = {};
x.str = 'Hello Wor\nld';
x.a = /\s/g;
x.action = new Function('return `' + x.str + '`.replace(' + x.a + ', "")');
console.log(x.action());

请注意,由于x.str是一个字符串,因此应将其括在字符串定界符中,并且由于它也包含换行符,因此应将其括在反引号中。

更好的是,根本不使用new Function

let x = {};
x.str = 'Hello Wor\nld';
x.a = /\s/g;
x.action = () => x.str.replace(x.a, '');
console.log(x.action());