2010-06-02 17 views
9

Estoy pensando en particular en Chrome, aunque Firebug sería interesante. Intenté toString() y valueOf(), pero ninguno de esos parece ser utilizado. Curiosamente, si tomo una función, se mostrará la definición de la función, pero luego, si agrego un método toString(), ¡aparecerá nulo!¿Hay algún método que pueda anular en un objeto JavaScript para controlar lo que muestra console.log?

var a = function(){}; 
console.log(a); // output: function(){} 
a.toString = function(){ return 'a'; }; 
console.log(a); // output: null 
a.valueOf = function(){ return 'v'; }; 
console.log(a); // output: null 

¿Alguna idea?

+0

ver también [ajustar el comportamiento del objeto personalizado console.log] (http://stackoverflow.com/q/28397861/1048572) para un entorno Node.js – Bergi

Respuesta

4

No hay manera de que yo sepa. Su mejor apuesta será la de definir un método toString() en el objeto que desea registrar y luego llamarlo, ya sea directa o indirectamente:

var o = {}; 
o.toString = function() { 
    return "Three blind mice"; 
}; 

console.log("" + o); 
console.log(o.toString()); 
0

usted debe conseguir un mejor resultado de Firebug, debe obtener

var a = function(){}; 
console.log(a); // output: function 
a.toString = function(){ return 'a'; }; 
console.log(a); // output: function, {toString()} 
a.valueOf = function(){ return 'v'; }; 
console.log(a); // output: function, {toString(), valueOf()} 

http://code.google.com/p/fbug/issues/detail?id=3117

+0

tengo que admitir, que tenía en realidad no lo intenté en Firebug (era un usuario de Firebug acérrimo, pero estoy en una Mac y Chrome se siente un poco menos fuera de lugar que Firefox, así que con la consola incorporada disponible en Chrome solo he estado usando eso recientemente). Obtengo "function()" como salida en Firebug, que es al menos * desconcertante * que el comportamiento de Chrome de "setting toString() cambia la visualización, pero no a la salida de toString(), HAHAHA!" Y además, no es exactamente un caso de uso común. Una función con atributos agregados? Soy raro. – agnoster

+0

yo también ;-) y aquí algunos caracteres más entonces. – johnjbarton

Cuestiones relacionadas