用参数实例化Javascript

用参数实例化Javascript,javascript,Javascript,我知道这是一个纯粹的javascript基本错误,我错了。我正试图像这样包装我的createError函数: export const throwError = error => { return createError(error, { message: 'This is my error' }); } throw new (throwError('Error'))(); // equivalent to: 然后: throw new (throwError ('Er

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

export const throwError = error => {
  return createError(error, {
    message: 'This is my error'
  });
}
throw new (throwError('Error'))(); // equivalent to:
然后:

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

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

我怎么能让它不包括工作。为什么它不起作用?是否可以返回新的createError。。在我的投掷器功能内不工作

我认为你应该

export const MyError = createError('Error', {
  message: 'This is my error'
});
如果您真的需要动态地传递错误参数,这对性能不好,因为它会创建许多不同的类,那么您不能真正避免在创建构造函数的调用周围使用括号。更明确地说,它的工作原理如下:

export const throwError = error => {
  return createError(error, {
    message: 'This is my error'
  });
}
throw new (throwError('Error'))(); // equivalent to:

在你的代码中,你是在调用抛出新的。。。。像那样背靠背地排队?抛出第一个错误后,将不会抛出第二个错误。new throwError args表示throwError是类的名称。但是throwError不是一个类构造函数。createError返回一个类构造函数,你需要用括号使返回的值用作构造函数,而不仅仅是throwError。@KhauriMcClain我认为他们只是在同一个地方尝试每种语法,一种有效,另一种无效。这是一种不寻常的情况。返回构造函数的函数并不常见。这种语言并没有真正提供简化的语法。