mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 14:07:46 +00:00
LibJS: Implement correct object property ordering
This commit introduces a way to get an object's own properties in the correct order. The "correct order" for JS object properties is first all array-like index properties (numeric keys) sorted by insertion order, followed by all string properties sorted by insertion order. Objects also now print correctly in the repl! Before this commit: courage ~/js-tests $ js > ({ foo: 1, bar: 2, baz: 3 }) { bar: 2, foo: 1, baz: 3 } After: courage ~/js-tests $ js > ({ foo: 1, bar: 2, baz: 3 }) { foo: 1, bar: 2, baz: 3 }
This commit is contained in:
parent
58f6f50de4
commit
95abcc3722
9 changed files with 41 additions and 9 deletions
|
@ -88,6 +88,13 @@ public:
|
|||
const HashMap<FlyString, PropertyMetadata>& property_table() const;
|
||||
size_t property_count() const;
|
||||
|
||||
struct Property {
|
||||
FlyString key;
|
||||
PropertyMetadata value;
|
||||
};
|
||||
|
||||
Vector<Property> property_table_ordered() const;
|
||||
|
||||
void set_prototype_without_transition(Object* new_prototype) { m_prototype = new_prototype; }
|
||||
|
||||
void remove_property_from_unique_shape(const FlyString&, size_t offset);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue