Est-il une sorte de code de hachage fonction en JavaScript?

En gros, je suis en train de créer un objet unique d'objets, un ensemble. J'ai eu la brillante idée d'utiliser un objet JavaScript avec des objets pour les noms de propriété. Tels que,

set[obj] = true;

Cela fonctionne, jusqu'à un certain point. Il fonctionne très bien avec de la ficelle et des chiffres, mais avec d'autres objets, ils semblent tous "hash" à la même valeur et accéder à la même propriété. Est-il une sorte de façon, je peux générer une unique valeur de hachage pour un objet? Comment faire des chaînes et des nombres le faire, puis-je remplacer le même comportement?

  • La raison pour laquelle les objets de tous les "hash" à la même valeur est parce que vous n'ont pas outrepassé leurs méthodes toString. Depuis les touches sont nécessaires pour être des chaînes de caractères, la méthode toString est automatiquement appelée pour obtenir une clé valide de sorte que tous vos objets de la conversion à la même chaîne par défaut: "[object object]".
  • JSON.stringify(obj) ou obj.toSource() peut travailler pour vous en fonction du problème et de la plate-forme cible.
  • JSON.stringify(obj) littéralement juste convertit le (tout) objet en chaîne de caractères. Donc, vous serait essentiellement une simple copie de l'objet sur lui-même. C'est inutile, un gaspillage de l'espace et de ne pas optimale.
  • Vrai, c'est pourquoi ça dépend quel est ton problème. Quand j'ai trouvé cette question par le biais de google ma solution finale a été d'appeler toSource() sur les objets. Une autre méthode serait d'utiliser un classique de hachage sur la source.
  • toSource ne fonctionnent pas dans Chrome btw
InformationsquelleAutor Boog | 2008-10-11