Comment JSON.ssortingngify et JSON.parse sans obtenir un object vide?

La raison pour laquelle je pose cette question est que je veux utiliser LocalStorage pour mes objects. Et comme vous le savez peut-être, lorsque vous utilisez LocalStorage, vous devez JSON.ssortingngifier les objects, puis les ré-parsingr en objects JavaScript.

J’essaie de JSON.ssortingngifier un object avec des méthodes, puis de le réparsingr, mais tout ce que j’ai est un object vide.

S’il vous plaît jeter un oeil à ce code.

Personne.js

function Person(name, telePhone) { this.getName = function () { return name; } this.setName = function (_name) { name = _name; } this.getTelePhone = function () { return telePhone; } this.setTelePhone = function (_telePhone) { telepPhone = _telePhone; } }; 

Javascript.js

 window.onload = function () { var name = "John"; var telePhone = "073-2335662"; var personObject = new Person(name, telePhone); console.log(personObject); // returns: Person console.log(personObject.getName()); //returns: John var test = JSON.ssortingngify(personObject); var newPersonObject = JSON.parse(test); console.log(newPersonObject); //returns: Object console.log(newPersonObject.getName()); //returns: Uncaught TypeError: Object # has no method 'getName' }; 

Des suggestions sur la raison pour laquelle cet object Personne après JSON.ssortingngify et JSON.parse est vide et perd toutes ses méthodes?

Les fonctions ne constituent pas un type de données JSON valide. Et certainement la scope variable détenue par les fonctions ne peut pas être sérialisée.

Vous devez stocker des données directement sur l’object pour le sérialiser.

JSON possède des structures de style “object” (paire clé / valeur) et “tableau” (liste ordonnée) , ainsi que ssortingng , number , true , false et null .

http://json.org/

JSON.ssortingngify ne sérialiserait pas les fonctions, car elles ne sont pas des données. JSON ne stocke que des données réelles et sa structure, des variables en particulier. Si vous souhaitez également stocker des fonctions, vous pouvez utiliser la méthode .toSsortingng() pour convertir un code source de la fonction en chaîne, et pour le reconvertir en fonction, vous pouvez utiliser eval () pour créer la méthode, mais cette méthode est distincte. problème.

Vous devrez probablement écrire votre propre sérialiseur pour effectuer ce type de tâche, l’idée est assez intéressante, je ne serai pas surpris s’il existe une solution prête pour cela.