Tach!
some_object.hasOwnProperty()
liefert in dem Fall false.ok, das heisst, ich muss, wenn ich hashes nutze, tatsaechlich diese zusaetzliche bedingung einbauen?
const some_object = {}; some_object['init'] = true; const key = 'constructor'; if(some_object.hasOwnProperty(key) && some_object[key] === true){ destroy_earth(); }
finde ich immer noch nicht huebsch, sondern fehleranfaellig.
Es kommt auf die eigentliche Aufgabenstellung an. Das Problem tritt doch nur auf, wenn key
kein bekannter konstanter Wert ist, also aus einer unbekannten Quelle kommt. In dem Fall ist etwas mehr Aufwand nötig, um ihn für alle Werte sicher einsetzen zu können.
ich habe bei meiner weiteren recherche soeben noch Map gefunden. vielleicht ist das besser geeignet. damit waere der obige code wohl:
const some_object = new Map(); some_object.set('init', true); const key = 'constructor'; if(some_object.get(key)){ destroy_earth(); }
das sieht sauberer aus.
Ja, Map gibt es auch. Wenn man nur einen einfachen Key-Value-Speicher braucht, kann man das nehmen. Objekte haben noch andere Eigenschaften. Das muss man für seinen konkreten Fall klären, was da sinnvoller ist.
In deinen Beispielen kannst du auch für
some_object
const
verwenden.ah, das const, bezieht sich nur auf die oberste ebene des objekts und nicht auf die properties, ok. finde ich nicht intuitiv, aber gut zu wissen.
Muss aber so sein. Man kann nicht garantieren, dass alle Unterelemente konstant bleiben. Man kann ja beliebig Referenzen auf diese erstellen, beziehungsweise die Referenzen können schon existieren. Darüber kann man die Unterlemente ändern.
dedlfix.