It seems from Object.getOwnPropertyNames vs Object.keys, that the main difference between Object.keys()
and Object.getOwnPropertyNames()
is that the former only returns some of the properties — those that are enumerable. So I’m wondering for something like an Error
object, why it’s decided that the properties aren’t enumerable. For example:
try {
let field="XYZ";
field.a.b.c;
} catch (error) {
console.log('111', Object.getOwnPropertyNames(error));
console.log('222', Object.keys(error));
}
Why for example does the Error object not make those properties enumerable? When is a property usually made enumerable?