Cuando console.log()
visualizo un objeto en mi programa JavaScript, solo veo la salida [object Object]
, que no es muy útil para averiguar qué objeto (o incluso qué tipo de objeto) es.
En C # estoy acostumbrado a anular ToString()
para poder personalizar la representación del depurador de un objeto. ¿Hay algo similar que pueda hacer en JavaScript?
javascript
debugging
tostring
devios1
fuente
fuente
typeof
).Respuestas:
También puede anular
toString
en Javascript. Ver ejemplo:Vea esta discusión sobre cómo determinar el nombre del tipo de objeto en JavaScript.
fuente
toString
propiedad del prototipo ,Object.prototype.toString.call(f)
seguirá mostrándose[object Object]
.Primero anule
toString
su objeto o el prototipo:Luego, convierta a cadena para ver la representación de cadena del objeto:
Si no le gusta la escritura adicional, puede crear una función que registre representaciones de cadena de sus argumentos en la consola:
Uso:
Actualizar
E2015 proporciona una sintaxis mucho mejor para estas cosas, pero tendrás que usar un transpilador como Babel :
fuente
Una forma fácil de obtener resultados depurables en el navegador JS es simplemente serializar el objeto en JSON. Entonces podrías hacer una llamada como
Por ejemplo,
alert("Blah! " + JSON.stringify({key: "value"}));
produce una alerta con el textoBlah! {"key":"value"}
fuente
Si está utilizando Node, podría valer la pena considerarlo
util.inspect
.Esto producirá:
Mientras que la versión sin inspeccionar imprime:
fuente
Simplemente anule el
toString()
método.Ejemplo simple:
Lo hace aún mejor cuando define un nuevo tipo:
fuente
v0.10.*
o ChromeVersion 32.0.1700.102
. Mientras que llamar a toString directamente (lame) o usar coerción de tipo (lamer) funcionará con esto, la consola [/ info | log /] usa el antiguo pre-mod toString.Si el objeto lo define usted mismo, siempre puede agregar una anulación de toString.
fuente
Con literales de plantilla :
fuente
Agregue la propiedad 'Symbol.toStringTag' al objeto o clase personalizados.
El valor de cadena que se le asigna será su descripción de cadena predeterminada porque se accede internamente por el
Object.prototype.toString()
método .Por ejemplo:
Mostrar fragmento de código
Algunos tipos de JavaScript, como Maps y Promises, tienen un
toStringTag
símbolo integrado definidoDado que
Symbol.toStringTag
es un símbolo conocido , podemos hacer referencia a él y verificar que los tipos anteriores tengan la propiedad Symbol.toStringTag -fuente
toString()
directamente la única forma de lograrlofunction MyObj() {} Object.prototype.toString.call(new MyObj()) // "[object MyObj]"
?El registro de la consola de Chrome le permite inspeccionar el objeto.
fuente
console.log("this is my object:", obj)
.-Esta operación requiere mucho tiempo para completarse, y su uso se desaconseja según los documentos de mozilla: https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/proto
-Aparentemente, los navegadores modernos desaprobaron .prototype y ECMA6 especifica el uso apropiado__proto__ en su lugar.
Entonces, por ejemplo, si está definiendo su propia geoposición de objetos , debe llamar a la propiedad __proto__ en lugar de .prototype :
fuente
A continuación, se muestra un ejemplo de cómo secuenciar un objeto Map:
fuente
Puede dar a cualquier objeto personalizado sus propios métodos toString, o escribir uno general al que pueda llamar en el objeto que está mirando.
fuente
En lugar de anular
toString()
, si incluye la biblioteca de prototipos de JavaScript , puede utilizarlaObject.inspect()
para obtener una representación mucho más útil.Los frameworks más populares incluyen algo similar.
fuente
Puede extender o anular en JS
fuente
fuente