Javascript用参数实例化

时间:2019-01-21 17:16:23

标签: javascript

我知道这是一个纯JavaScript基本错误,但我出错了。我试图像这样包装我的createError函数:

export const throwError = error => {
  return createError(error, {
    message: 'This is my error'
  });
}

然后:

throw new (throwError ('Error')); // #1 This works

throw new throwError ('Error'); // #2 This doesn't work without paranthesis

如何在不包含()的情况下运行它。为什么不起作用?是否可以在我的return new createError..函数中使用throwError(不起作用)?

1 个答案:

答案 0 :(得分:1)

我认为你应该做

export const MyError = createError('Error', {
  message: 'This is my error'
});

throw new MyError(); // parenthesis optional here

如果您确实需要动态传递Error参数(这对性能不利,因为它会创建许多不同的类),那么您真的不能避免在围绕构造函数的调用周围加上括号。更明确地写出来,它是这样的:

throw new (throwError('Error'))(); // equivalent to:

const error = throwError('Error');
throw new error();