Je sais comment utiliser JSON pour créer des objets, mais il ne semble pas nécessaire d'utiliser JSON pour créer un objet d'un type d'objet spécifique.Comment utiliser JSON pour créer un objet qui hérite du type d'objet?
Voici un exemple d'un objet et la création d'une instance de celui-ci:
Person = function() { };
Person.prototype = {
FirstName: null,
GetFirstName: function() {
return this.FirstName;
}
};
//Create an instance of the Person Object
var me = new Person();
me.FirstName = "Chris";
alert(me.GetFirstName()); //alert the FirstName property
Maintenant, je voudrais utiliser JSON pour créer un nouvel objet Personne de telle sorte que la fonction getFirstname travaille.
Voici quelque chose comme ça je cherche à faire (mais ce code ne fonctionne pas):
var you = new Person() { FirstName: "Mike" };
// OR
var you = new Person{ FirstName: "Mike" };
est-il de toute façon d'utiliser JSON pour créer un objet qui est d'un type spécifique?
MISE À JOUR: Mon exemple avec l'objet Person est juste pour simplifier la question. En fait, je suis incapable de modifier les constructeurs des objets réels dont j'ai besoin pour créer des instances. Les objets font partie d'une bibliothèque tierce. MISE À JOUR: En utilisant certaines des suggestions ci-dessous, j'ai été capable de trouver un moyen de créer un objet qui hérite de l'original, et j'accepte JSON dans son constructeur. C'est propre!
personWrapper = function(obj){
for(var o in obj){
this[o] = obj[o];
}
};
personWrapper.prototype = new Person();
var you = new personWrapper({FirstName: "Chris"});
alert(you.GetFirstName());
alert(you instanceof Person); // returns True - we are successfully inheriting from Person!
C'est à peu près exactement comment fonctionne Microsoft Ajax. Vous définissez une méthode qui renvoie un type spécifique. La couche ajax interroge ce type et crée un proxy d'objet js. Ensuite, tous les appels json renvoient un paramètre '__type' qui indique à la bibliothèque quel proxy utiliser pour instancier l'objet. – Travis