2009-11-03 4 views
1

J'utilise le plugin json JQuery et je tente de convertir un objet personnalisé en JSON en utilisant la fonction toJSON. Voici l'objet:JQuery JSON Plugin toJSON un objet personnalisé

function Customer(firstName, lastName, age) { 

    Customer.prototype.firstName = firstName; 
    Customer.prototype.lastName = lastName; 
    Customer.prototype.age = age; 
} 

Et voici le .toJSON $ appliqué:

var customer = new Customer('mohammad', 'azam', 28); 

     var a = $.toJSON(customer); 

Pour une raison quelconque "a" est toujours vide.

Mais si j'utilise le code suivant:

var params = new Object(); params.firstName = 'Mohammad'; params.lastName = 'Azam'; params.age = 28;

var a = $ .toJSON (paramètres);

alors ça marche bien!

Qu'est-ce qui me manque lorsque j'essaie d'exécuter toJSON sur un objet personnalisé.

Répondre

2

Je n'ai pas eu le temps de le tester (alors pardonnez-moi si cela est faux), mais je crois qu'en assignant:

Customer.prototype.firstName = firstName; 

vous font l'équivalent de définir la propriété stripteaseuses statique pour la la classe entière.

Avez-vous essayé:

this.firstName = firstName; 

C'est la façon dont il se fait normalement dans l'objet orienté JS de toute façon.

En bref, la fonction serait alors:

function Customer(firstName, lastName, age) { 

    this.firstName = firstName; 
    this.lastName = lastName; 
    this.age = age; 
} 
+0

Vous avez raison! Merci: D – azamsharp

+0

Cet article dit qu'en utilisant le prototype, vous ajouterez les propriétés à l'instance de l'objet => http://www.javascriptkit.com/javatutors/proto2.shtml – azamsharp

+0

Je ne peux pas parler pour toutes les implémentations des navigateurs de JavaScript, mais mon expérience a montré que modifier le prototype ne modifie pas réellement les instances. Oui, les modifications de prototype sont accessibles aux membres de cette classe, mais elles ne sont pas identiques à l'attribution de variables membres. – cwallenpoole

Questions connexes