2009-07-09 11 views
12

Obtengo un "Objeto no admite esta propiedad o error de método", ¿alguien sabe por qué?Javascript toSource() método no funciona

tengo valores enchufados en ID de usuario, 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 

Aunque este enlace dice su posible http://www.w3schools.com/jsref/jsref_toSource_date.asp

Respuesta

19

toSource() no funciona en Internet Explorer o Safari. Es solo Gecko. Vea Implementing Mozilla's toSource() method in Internet Explorer para las alternativas.

+8

+1 por mencionar Safari! El mundo del navegador no es solo Firefox e IE. –

+0

@Vince: Si su jefe es tan incompetente, intente explicarle que asegurarse de que funcione fuera de IE y FF dará como resultado menos tareas de mantenimiento la próxima vez que se actualice IE. También hará que los usuarios de IE y FF se sientan menos molestos con su empresa cuando naveguen por el sitio desde su teléfono celular (sin importar si es un iPhone, un Nokia u otra cosa sin IE). – Fredrik

+0

No olvides que Chrome realmente se está metiendo en la pelea. Dejando a un lado Safari + Chrome + Opera, podría estar dejando un 15% de la cuota (dependiendo del mercado de su sitio web). Como un ejemplo, vea: http://www.w3schools.com/browsers/browsers_stats.asp – lepe

8

Trate de usar un JSON serializer lugar. toSource es específico de Mozilla y no es compatible con IE.

Si solo está depurando, su mejor opción será install Firebug y use console.dir (emp); para imprimir el contenido de un objeto a la ventana de la consola.

Actualización: Solo tenga en cuenta que en el link you posted dice: "Nota: ¡Este método no funciona en Internet Explorer!" Y en el MDC page dice "No estándar".

+0

¡Vaya! lo siento chicos no vieron que –

+0

Hay 5 implementaciones diferentes de serializador JSON desde ese enlace GitHub. Puede dar una alternativa de ejemplo de este código: alert (obj.toSource()) – MacGyver

+3

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

4

Usted puede llamar a toString lugar, o poner en una condición como esta ...

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

EDIT:

Dado que esto no está trabajando para usted, es posible que desee utilizar JSON.stringify()

2

Aunque no es recomendable (para extender nativos objetos JS) , durante el desarrollo puede usar:

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

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

¡salud!

+0

¿Qué hay de las funciones y demás? –

Cuestiones relacionadas