Propriedades de erro n√£o s√£o enumer√°veis ‚Äč‚Äčem Javascript

Se você atravessar um objeto regular:

var obj = {foo: 'bar', baz: true};

for (var i in obj) {
console
.log(i, obj[i]);
}

O seguinte ser√° gerado:

foo bar
baz
true

Mas, e se voc√™ atravessar uma inst√Ęncia de Error:

var e = new Error('Something went wrong');
for (var i in e) {
console
.log(i, e[i]);
}

Isso não vai imprimir nada. Além disso, Object.keys(e)vai voltar [].

Vamos adicionar algumas propriedades personalizadas.

var e = new Error('Something went wrong');
e
.foo = 'bar';
for (var i in e) {
console
.log(i, e[i]);
}

Em seguida, eles ser√£o exibidos:

foo bar

Confuso? Em seguida, verifique se Erroras propriedades padr√£o n√£o s√£o enumer√°veis .