Closed Bug 726477 Opened 12 years ago Closed 12 years ago

getOwnPropertyNames lies on Error objects

Categories

(Core :: JavaScript Engine, defect)

defect
Not set
normal

Tracking

()

RESOLVED DUPLICATE of bug 724768

People

(Reporter: erights, Unassigned)

Details

Seen on FF Nightly 13.0a1 (2012-02-12):

    > var er = new Error('msg');
    > Object.getOwnPropertyNames(er).sort().join('\n');
    > Object.keys(er).sort().join('\n');
    > var names = [];
    > for (var n in er) { names.push(n); }
    2
    > names
    fileName,lineNumber
    > ['fileName', 'lineNumber', 'message', 'stack'].filter(function(n) { return !!Object.getOwnPropertyDescriptor(er, n); });
    fileName,lineNumber,message,stack

According to getOwnPropertyNames() and keys(), er has no own properties. According to getOwnPropertyDescriptor() it has four. According to for/in, it has two enumerable properties, two of which are among the own properties reported by getOwnPropertyDescriptor().

This behavior is terribly inconsistent and confusing, leading to bad bugs in meta-programming code.
Pretty sure this is a dup of a bug on Error objects having no enumerate hook.
Whiteboard: DUPEME
Status: NEW → RESOLVED
Closed: 12 years ago
Resolution: --- → DUPLICATE
Whiteboard: DUPEME
You need to log in before you can comment on or make changes to this bug.