Javascript 如何动态扩展多个错误类?

Javascript 如何动态扩展多个错误类?,javascript,Javascript,我可以声明扩展错误类,如: 类NotFoundError扩展错误{ 构造函数(消息){ 超级(讯息) this.name='NotFoundError'//用于日志 } } 然后评估: if(NotFoundError的错误实例){ ... } 如何动态地声明许多错误,最好使用ES5语法 declareerror(['NotFoundError','TimeoutError','acerror',…])) 简单,使用匿名类表达式并将其分配给全局变量: 函数声明错误(名称){ 窗口[名称]=

我可以声明扩展错误类,如:

类NotFoundError扩展错误{
构造函数(消息){
超级(讯息)
this.name='NotFoundError'//用于日志
}
}
然后评估:

if(NotFoundError的错误实例){
...
}
如何动态地声明许多错误,最好使用ES5语法

declareerror(['NotFoundError','TimeoutError','acerror',…]))

简单,使用匿名类表达式并将其分配给全局变量:

函数声明错误(名称){
窗口[名称]=类扩展错误{
构造函数(消息){
超级(讯息)
this.name=名称;
}
}
}
函数声明错误(错误){
错误。forEach(申报人错误);
}
声明错误(['NotFoundError','TimeoutError','AcError']);
const error=new acleror(“坏大流士!”);
console.log(
error.name,
错误消息,
错误实例错误,
AcError的错误实例

);在纯ES5中动态扩展错误,如@Amadan所建议,并使用错误类名扩展:

函数声明错误(名称){
函数CustomError(消息、文件名、行号){
var实例=新错误(消息、文件名、行号);
setPrototypeOf(实例,Object.getPrototypeOf(this));
返回实例;
}
CustomError.prototype=Object.create(Error.prototype{
建造商:{
值:错误,
可枚举:false,
可写:对,
可配置:true
}
});
CustomError.prototype.name=名称;
if(Object.setPrototypeOf){
setPrototypeOf(CustomError,Error);
}否则{
CustomError.\uuuu proto\uuuu=错误;
}
窗口[名称]=自定义错误
}
函数声明错误(错误){
错误。forEach(申报人错误);
}
声明错误(['NotFoundError','TimeoutError','AcError']);
log(newnotfounderror('file:test.txt').stack)