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 Error
as propriedades padrão não são enumeráveis .