是否向JavaScript错误对象添加属性?

是否向JavaScript错误对象添加属性?,javascript,error-handling,javascript-objects,Javascript,Error Handling,Javascript Objects,我看到,根据文档,Error对象在不同浏览器中可能有不同的行为。 我想检查一下您对在默认的错误对象上添加属性的看法 在我的特定代码中,我想用我自己的标记名标记一个Error对象以供进一步使用,这意味着->向对象添加属性,如下所示: const error=新错误('some message') if(someConditionExist()){ 错误。_myTag='tag1'; } 否则{ 错误。_myTag='tag2'; } //然后抛出错误并在其他地方捕获它。。。 我还没有看到任何指导

我看到,根据文档,
Error
对象在不同浏览器中可能有不同的行为。 我想检查一下您对在默认的
错误
对象上添加属性的看法

在我的特定代码中,我想用我自己的标记名标记一个
Error
对象以供进一步使用,这意味着->向对象添加属性,如下所示:

const error=新错误('some message')
if(someConditionExist()){
错误。_myTag='tag1';
}
否则{
错误。_myTag='tag2';
}
//然后抛出错误并在其他地方捕获它。。。
我还没有看到任何指导方针,这类事情的含义(如果有的话)是什么


你们当中有人有什么顾虑吗?您在不同的浏览器中遇到过任何问题吗?

好吧,我们可以争论您是否应该向内置对象添加自定义属性,但类似的方法可能会奏效:

class CustomError extends Error {
  constructor(tag) {
    super();
    this.__tag = tag;
  }
};

const customError = new CustomError('tag1');

console.log(customError.__tag); // 'tag1'

当然可以。唯一的问题可能是(将来?)可能与本机名称冲突的属性名称one@Bergi-对。。。当然,我知道这个选择,不过,我在这里没有任何真正的扩展。通常,您会扩展一个类以进一步了解其行为。在这里,我已经能够添加属性了,对吗?我看不出与OP在这里所做的有多大区别,除了
class extensed Error
需要环境中的本机ES6支持我喜欢这种方法!我使用了它,还包含了一个构造函数参数,用于在
super
调用中传递消息值。我建议对您的答案进行编辑,以便将其包含在示例中。