Tach!
In der von Dir verlinkten Doku wird sogar beim Vergleich von Map und Object von der Verwendung eines Objects abgeraten, da auch hier "Accidental Keys" enthalten sein könnten:
Ja, das ist in der Tat so, aber praktisch spielt das kaum eine Rolle. Wenn du deine Instanz mit einem Objektliteral erstellst, also so
const o = {};
o.foo = 'bar;
oder so
const o = {
foo: 'bar
};
dann hast du über die Prototype-Chain nur ein paar sehr technisch benannte Eigenschaften (alles von der linken Spalte, das mit Objekt.prototype beginnt), die kaum in anderen Anwendungsfällen vorkommen. Dazu können noch die kommen, die von dir oder einer 3rd-Party-Library an Objekt.prototype angefügt worden sind. Diese kannst du nur treffen, wenn du sie direkt ansprichst. Mit Objekt.keys()/.values()/.entries()
über dein Objekt iteriert, bekommst du sie nicht zu fassen. for...in
-Loops solltest du aber meiden, denn diese laufen auch über enumerable Eigenschaften der Prototypen.
dedlfix.