Es ist ein vollständig leeres Objekt (nichts geerbt von .prototype
einschließlich Object.prototype
), so dass Sie garantiert werden können, dass jede Eigenschaftssuche nur erfolgreich ist, wenn die Eigenschaft explizit zum Objekt hinzugefügt wurde.
Wenn Sie beispielsweise einige Daten speichern möchten, bei denen Sie die Schlüssel nicht im Voraus kennen, besteht die Möglichkeit, dass ein angegebener Schlüssel denselben Namen wie ein Mitglied von Object.prototype
hat und einen Fehler verursacht.
In diesen Fällen müssen Sie eine explizite .hasOwnProperty()
Prüfung durchführen, um unerwartete vererbte Werte auszuschließen. Aber wenn nichts geerbt ist, kann Ihr Test vereinfacht werden zu einem if (key in my_object) {
Test, oder vielleicht ein einfacher truthy Test wenn geeignet.
Ohne eine Prototyp-Kette würde ich mir auch vorstellen, dass Lookups von Eigenschaften, die nicht existieren, schneller wären, da nur das unmittelbare Objekt überprüft werden müsste. Ob dies in der Realität (aufgrund von Optimierungen) herauskommt oder nicht, würde mit Leistungstests festgestellt werden.
Gleiche wie in der Antwort erwähnt: http://www.devthought.com/2012/01/18/an-object-is-not-a-hash/ Für keine Auseinandersetzungen mit vererbten Eigenschaften sicherstellen . – Aravind