2009-07-09 7 views
12

Je reçois un "Objet ne supporte pas cette propriété ou erreur de méthode", est-ce que quelqu'un sait pourquoi?La méthode Javascript toSource() ne fonctionne pas

J'ai des valeurs dans userId bouchés, fname, lname, oname, sam, hasAccess

function Employee(id, fname, lname, oname, sam, access) { 
    this.id = id; 
    this.fname = fname; 
    this.lname = lname; 
    this.oname = oname 
    this.sam = sam; 
    this.access = access; 
} 

var emp = new Employee(userId, fname, lname, oname, sam, hasAccess); 

var jsonstuff = emp.toSource(); //Breaking here 

Bien que ce lien indique son possible http://www.w3schools.com/jsref/jsref_toSource_date.asp

Répondre

19

toSource() ne fonctionne pas dans Internet Explorer ou Safari. C'est Gecko seulement. Voir Implementing Mozilla's toSource() method in Internet Explorer pour d'autres alternatives.

+8

+1 pour avoir mentionné Safari! Le monde du navigateur n'est pas seulement Firefox et IE. –

+0

@Vince: Si votre patron est aussi incompétent, essayez de lui expliquer que faire en sorte que cela fonctionne en dehors d'IE et de FF se traduira par moins de travail de maintenance la prochaine fois que IE est mis à jour. Cela rendra également les utilisateurs d'IE et de FF beaucoup moins contrariés par votre entreprise lorsqu'ils naviguent sur le site depuis leur téléphone portable (peu importe s'il s'agit d'un iPhone, d'un Nokia ou d'autre chose sans IE). – Fredrik

+0

N'oubliez pas que Chrome commence vraiment à se battre. Laissant Safari + Chrome + Opera de côté, vous pourriez laisser 15% de la part (selon le marché de votre site Web). Comme un exemple, voir: http://www.w3schools.com/browsers/browsers_stats.asp – lepe

8

Essayez d'utiliser un JSON serializer à la place. est spécifique à Mozilla et n'est pas supporté par IE.

Si vous ne faites que déboguer, votre meilleur pari sera de install Firebug et d'utiliser console.dir (emp); pour imprimer le contenu d'un objet dans la fenêtre de la console.

Mise à jour: Notez simplement que sur le link you posted il est écrit "Note: Cette méthode ne fonctionne pas dans Internet Explorer!" Et sur le MDC page il est dit "non standard".

+0

Oops! Désolé les gars n'ont pas vu que –

+0

Il existe 5 implémentations différentes de JSON Serializer à partir de ce lien GitHub. Pouvez-vous donner un exemple d'alternative de ce code: alert (obj.toSource()) – MacGyver

+3

Essayez 'alert (JSON.stringify (obj))' – Prestaul

4

Vous pouvez appeler toString à la place, ou mettre en état comme ça ...

var jsonstuff = (emp.toSource) ? emp.toSource() : emp.toString(); 

EDIT:

Depuis cela ne fonctionne pas pour vous, vous pouvez utiliser JSON.stringify()

2

Bien que non recommandé (d'étendre les objets natifs JS) , pendant le développement, vous pouvez utiliser:

Object.prototype.toSource 
    || (Object.prototype.toSource = function(){return JSON.stringify(this);}) 

c = {a:100} 
//>Object 
c.toSource() 
//>"{"a":100}" 

bravo!

+0

Qu'en est-il des fonctions et ainsi de suite? –

Questions connexes