2012-09-03 12 views
6

Si abro la consola y entro ...¿Por qué la consola no usa el método `toString` del objeto ingresado?

var f=function(a){ 
    this.toString=function(){ 
     return "-->"+a; 
    } 
},i=new f(5); 
i; 

... se vuelve ({toString:(function() {return "-->" + a;})}).

Pero si entro ...

var f=function(a){ 
    this.toString=function(){ 
     return "-->"+a; 
    } 
},i=new f(5); 
alert(i); 

... Alerta "-->5"

no me importa mucho, pero yo preferiría que el primer código para volver "-->5". ¿Hay alguna manera de hacerlo, o es intencional que la consola no use toString?

+1

i es un objeto y la consola trata de mostrar los elementos tal como son en realidad. Alert no puede mostrar objetos, por lo que llamará a la función toString. La depuración sería más difícil si los objetos siempre se convirtieran en cadenas en la consola. – temporalslide

Respuesta

4

Está destinado a la depuración de uso, por lo que es muy útil que le diga todo lo que hay que decir sobre un objeto.

Después de todo, si hubieras querido el resultado de llamar toString() habrías pedido a él, con i.toString() o "" + i, pero si ese es el comportamiento por defecto no habría una manera de conseguir la representación más profundo se hace llegar .

+0

Usar '" "+ i' es una idea buena y simple, gracias. – Oriol

Cuestiones relacionadas