Je voudrais stocker un objet JavaScript HTML5 localStorage
, mais mon objet est apparemment en train d'être converti en chaîne de caractères.
Je peux stocker et d'extraire des primitives JavaScript, des types et des tableaux à l'aide d' localStorage
, mais les objets ne semblent pas fonctionner. Devraient-ils?
Voici mon code:
var testObject = { 'one': 1, 'two': 2, 'three': 3 };
console.log('typeof testObject: ' + typeof testObject);
console.log('testObject properties:');
for (var prop in testObject) {
console.log(' ' + prop + ': ' + testObject[prop]);
}
// Put the object into storage
localStorage.setItem('testObject', testObject);
// Retrieve the object from storage
var retrievedObject = localStorage.getItem('testObject');
console.log('typeof retrievedObject: ' + typeof retrievedObject);
console.log('Value of retrievedObject: ' + retrievedObject);
La sortie de la console est
typeof testObject: object
testObject properties:
one: 1
two: 2
three: 3
typeof retrievedObject: string
Value of retrievedObject: [object Object]
Il me semble que l' setItem
méthode est la conversion de la saisie d'une chaîne de caractères avant de les stocker.
Je vois ce comportement dans Safari, Chrome et Firefox, donc je suppose que c'est mon incompréhension de la de Stockage Web HTML5 spec, pas un navigateur spécifique bug ou d'une limitation.
J'ai essayé de donner un sens à l' structuré clone de l' algorithme décrit dans http://www.w3.org/TR/html5/infrastructure.html. Je ne comprends pas tout ce qu'il dit, mais peut-être que mon problème a à voir avec mon propriétés de l'objet n'étant pas énumérable (???)
Est-il une simple solution de contournement?