Ich lese ein paar Fragen und Antworten zu JavaScript-Wörterbuchimplementierungen, aber sie erfüllen meine Anforderungen nicht:
Also kam ich auf die Idee, die "valueOf" -Methode in Object.prototype wie folgt zu überschreiben:
%Vor%Ich habe das mit google-chrome getestet und es scheint gut zu funktionieren, aber ich bin ein wenig skeptisch, ob dies einige Nachteile haben wird, da es so einfach zu implementieren war.
Wenn Sie bedenken, dass die valueOf-Methode nicht für andere Zwecke im gesamten Code verwendet wird, glauben Sie, dass es irgendwelche Nachteile gibt?
Es ist eine interessante Idee. Ich schlage meine jshashtable vor. Es erfüllt Ihre erste Anforderung, aber nicht die zweite. Ich sehe nicht wirklich den Vorteil, darauf zu bestehen, die Zugriffsnotation der eckigen Klammereigenschaft zu verwenden: Haben Sie eine besondere Anforderung dafür?
Mit jshashtable können Sie dem Konstruktor Hashtable
eine Hashfunktion bereitstellen. Diese Funktion wird an ein Objekt übergeben, das als Schlüssel verwendet werden soll, und muss eine Zeichenfolge zurückgeben. Sie könnten eine Funktion verwenden, die nicht unähnlich ist zu dem, was Sie dort haben, ohne Object.prototype
zu berühren.
Es gibt einige Nachteile für Ihre Idee:
valueOf
-Methode wird in einer for...in
-Schleife über jedem nativen Objekt angezeigt; Es ist eine interessante Frage, weil ich bisher angenommen habe, dass jedes Objekt als Index verwendet werden kann (aber nie mit assoziativen Arrays versucht wurde). Ich weiß zwar nicht genug über die Funktionsweise von JavaScript, aber ich würde wetten, dass valueOf irgendwo anders verwendet wird als JavaScript, auch wenn es nicht in Ihrem Code enthalten ist. Sie könnten später auf scheinbar unerklärliche Probleme stoßen. Zumindest würde ich mich auf eine neue Klasse beschränken und Object in Ruhe lassen;) Oder Sie nennen Ihre Hashing-Funktion explizit myHash () oder was auch immer und rufen z [x.myHash ()] auf, was Unordnung hinzufügt, aber lassen würde ich, persönlich, schlafe besser;) Ich kann nicht widerstehen, zu denken, dass es eine mehr JavaScript-bewusste Lösung dafür gibt, also bedenken Sie all diese hässlichen Umgehungslösungen;)
Wenn Sie auf diese Frage stießen und nach einem JS-Wörterbuch suchen, in dem Objekte Schlüssel sind, sehen Sie sich die Karte Map an vs Objekt in JavaScript
Tags und Links javascript dictionary hashtable