LocalStorage – ajouter un objet à un ensemble d'objets

Je tente de stocker localement un objet dans un tableau dans un objet.

Si j'essaie ce qui suit dans ma console, il fonctionne parfaitement:

theObject = {} theObject.theArray = [] arrayObj = {"One":"111"} theObject.theArray.push(arrayObj) 

Cependant, si je fais ce que je pense est l'équivalent, sauf le stockage du résultat dans localStorage, il échoue:

 localStorage.localObj = {} localStorage.localObj.localArray = [] stringArrayObj = JSON.stringify(arrayObj) localStorage.localObj.localArray.push(stringArrayObj) 

Je reçois l'erreur suivante …

 localStorage.localObj.localArray.push(stringArrayObj) TypeError arguments: Array[2] message: "—" stack: "—" type: "non_object_property_call" __proto__: Error 

Une idée de la façon dont je peux travailler?

À votre santé

Vous pouvez uniquement enregistrer des chaînes dans localStorage. Vous devez utiliser JSON-encoder l'objet puis enregistrer la chaîne résultante dans localStorage. Lorsque votre application démarre, JSON-décode la valeur que vous avez enregistrée dans localStorage.

 localObj = {} localObj.localArray = [] localObj.localArray.push(arrayObj) localStorage.localObj = JSON.stringify(localObj); ... localObj = JSON.parse(localStorage.localObj); 

LocalStorage ne peut stocker que les paires de valeurs-clés où la clé est une chaîne et la valeur est également une chaîne. Vous pouvez sérialiser votre hiérarchie entière d'objets dans JSON et l'enregistrer en tant qu'élément localStorage.

Selon les sources V8 (je suppose que vous utilisez Google Chrome, mais j'espère que ce n'est pas différent pour les autres moteurs JS) TypeError avec le message 'non_object_property_call' se produit que la méthode appelée valeur indéfinie ou nulle.