NEW 146931
Defining non-enumerable, non-numeric property breaks for (key in obj) on enumerable, numeric properties
https://bugs.webkit.org/show_bug.cgi?id=146931
Summary Defining non-enumerable, non-numeric property breaks for (key in obj) on enum...
mark.s.dittmer
Reported 2015-07-14 08:05:56 PDT
This was originally discovered on arrays, but I have since determined that it breaks objects in general. I'm writing a test inline because I'm not sure whether it should be a JavaScriptCore test or LayoutTest. Test code: var obj = { 0: 0, 1: 1, _2: 2 }; Object.defineProperty(obj, '_3', {}); for (var key in obj) console.log(key); Test output: 0 1 0 1 _2 Testing notes: - Problem occurs on arrays as well as Objects (given that it occurs on plain-old objects, this is not surprising) - Problem occurs with Object.defineProperty and Object.defineProperties under the same conditions - Problem only occurs when the newly define property is both non-numeric and non-enumerable (other property attributes do not appear to influence the outcome) - The only keys that duplicate themselves are numeric keys (that are enumerable) - Problem does not occur in return value of Object.keys(obj)
Attachments
Note You need to log in before you can comment on or make changes to this bug.