Question

Je m'amuse avec un projet de linguistique Javascript. J'aimerais le construire en utilisant des objets pour représenter des noms et des fonctions pour stocker des verbes, ce qui rend la conceptualisation de mon projet moins difficile. J'utilise des fonctions en tant que touches d'un objet (j'ai écrit un exemple ci-dessous). Sera-t-il possible de le sérialiser avec JSON au moment de sauvegarder les données?

function verbFn() {
   //do something
}

var nouns = {};

nouns[verbFn] = 'some value';

Dans cet exemple, JSON pourra-t-il sérialiser les "noms"??

Euh ... après avoir réfléchi à ma question initiale et lu les commentaires, je suis parvenu à la conclusion qu'essayer de faire les choses de cette façon était tout simplement faux et stupide.

Était-ce utile?

La solution

Non, JSON ne peut pas le faire. Les clés doivent être des chaînes entre guillemets.

De plus, il semble que vous n'utilisiez pas réellement la fonction en tant que clé. Elle est convertie en chaîne:

<script>

var x = {};
x[window.open] = true;

for (var i in x)
    alert(typeof i + '\n' + i); // typeof i == string

</script>

Autres conseils

Selon les normes , non, vous ne pouvez pas. La clé doit être une chaîne

vous n'utilisez pas vraiment les fonctions en tant que clés - vous utilisez la conversion de chaîne d'une fonction en tant que clé, qui repose également implicitement sur le fait que ces représentations de chaîne sont uniques. Pour les plates-formes prenant en charge les fonctions de décompilation, cela fonctionne bien, mais théoriquement, il pourrait y avoir des implémentations qui renverraient simplement "[fonction]". ce qui serait très mauvais dans votre cas.

JSON est une syntaxe de structure de données. Une fonction n'est pas une donnée, il est donc impossible de la sérialiser dans une structure de données (clé ou autre). Indépendamment de la langue, de la mise en œuvre ou de tout autre chose.

Non, les clés doivent toujours être des chaînes et rien d’autre. Voir la description standard .

Et noms n'est pas un tableau, c'est une carte, une table de hachage, un tableau associatif, un "objet", un de ceux-ci, quel que soit le nom que vous préférez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top