Estoy tratando de alertar a un valor devuelto de una función y obtengo esto en la alerta:
[object Object]
Aquí está el código JavaScript:
<script type="text/javascript">
$(function ()
{
var $main = $('#main'),
$1 = $('#1'),
$2 = $('#2');
$2.hide(); // hide div#2 when the page is loaded
$main.click(function ()
{
$1.toggle();
$2.toggle();
});
$('#senddvd').click(function ()
{
alert('hello');
var a=whichIsVisible();
alert(whichIsVisible());
});
function whichIsVisible()
{
if (!$1.is(':hidden')) return $1;
if (!$2.is(':hidden')) return $2;
}
});
</script>
whichIsVisible
es la función que estoy tratando de verificar.
javascript
jquery
Prady
fuente
fuente
Respuestas:
La conversión predeterminada de un objeto a una cadena es
"[object Object]"
.Como se trata de objetos jQuery, es posible que desee hacer
para imprimir el ID del elemento.
Como se menciona en los comentarios, debe utilizar las herramientas incluidas en navegadores como Firefox o Chrome para introspectar objetos haciendo en
console.log(whichIsVisible())
lugar dealert
.Nota al margen : las identificaciones no deben comenzar con dígitos.
fuente
Como han señalado otros, esta es la serialización predeterminada de un objeto. Pero por qué es
[object Object]
y no solo[object]
?¡Eso es porque hay diferentes tipos de objetos en Javascript!
stringify(function (){})
->[object Function]
stringify([])
->[object Array]
stringify(/x/)
->[object RegExp]
stringify(new Date)
->[object Date]
stringify({})
->[object Object]
Eso es porque la función constructora se llama
Object
(con una "O" mayúscula), y el término "objeto" (con una "o" pequeña) se refiere a la naturaleza estructural de la cosa.Por lo general, cuando se está hablando de "objetos" en Javascript, que en realidad medias " objeto objetos ", y no los otros tipos.
donde
stringify
debería verse así:fuente
thingy
JSON.stringify
, alguien puede tomar una impresión incorrecta?Object.prototype.toString.call(undefined)
da[object Undefined]
?[object Object]
es la representación toString predeterminada de un objeto en javascript.Si desea conocer las propiedades de su objeto, simplemente analícelo de esta manera:
En su caso particular, obtiene un objeto jQuery. Intente hacer esto en su lugar:
Esto debería alertar a la identificación del elemento visible.
fuente
Es el valor devuelto por la
toString()
función de ese objeto .Entiendo lo que intentas hacer, porque ayer respondí tu pregunta sobre cómo determinar qué div es visible. :)
La
whichIsVisible()
función devuelve un objeto jQuery real, porque pensé que sería más útil programáticamente . Si desea utilizar esta función con fines de depuración, puede hacer algo como esto:Dicho esto, realmente debería utilizar un depurador adecuado en lugar de
alert()
si está intentando depurar un problema. Si está usando Firefox, Firebug es excelente. Si está utilizando IE8, Safari o Chrome, tienen depuradores integrados.fuente
Puedes ver el valor dentro de [object Object] como este
Prueba así
referencia
https://off.tokyo/blog/react-native-object-object/
fuente
Lo esencial
Puede que no lo sepas, pero en JavaScript, cada vez que interactuamos con cadenas, números o primitivas booleanas, entramos en un mundo oculto de sombras de objetos y coerción.
cadena, número, booleano, nulo, indefinido y símbolo.
En JavaScript hay 7 tipos primitivos:
undefined
,null
,boolean
,string
,number
,bigint
ysymbol
. Todo lo demás es un objeto. Los tipos de primitivasboolean
,string
ynumber
se pueden envolver por sus homólogos de objeto. Estos objetos son instancias de los constructoresBoolean
,String
yNumber
respectivamente.Si las primitivas no tienen propiedades, ¿por qué
"this is a string".length
devuelven un valor?Porque JavaScript coaccionará fácilmente entre primitivas y objetos. En este caso, el valor de la cadena se convierte en un objeto de cadena para acceder a la longitud de la propiedad. El objeto de cuerda solo se usa durante una fracción de segundo, después de lo cual se sacrifica a los dioses de la recolección de basura, pero en el espíritu de los programas de descubrimiento de televisión, atraparemos a la criatura elusiva y la conservaremos para un análisis posterior ...
Para demostrar esto, considere el siguiente ejemplo en el que estamos agregando una nueva propiedad al prototipo del constructor de cadenas.
De este modo, las primitivas tienen acceso a todas las propiedades (incluidos los métodos) definidas por sus respectivos constructores de objetos.
Así que vimos que los tipos primitivos coaccionarán apropiadamente a su respectiva contraparte de Objeto cuando sea necesario.
Análisis de
toString()
métodoConsidere el siguiente código
Como se discutió anteriormente, lo que realmente está sucediendo es que cuando llamamos
toString()
a un método en un tipo primitivo, debe ser forzado a su contraparte de objeto antes de que pueda invocar el método.es decir
myNumber.toString()
es es equivalente aNumber.prototype.toString.call(myNumber)
y similar a otros tipos primitivos.Pero, ¿qué pasa si en lugar de pasar el tipo primitivo al
toString()
método de su correspondiente función de constructor de objetos, forzamos el tipo primitivo a pasar como parámetro altoString()
método del constructor de funciones de objeto (Object.prototype.toString.call(x)
)?Un vistazo más de cerca a Object.prototype.toString ()
Según la documentación , cuando se llama al método toString, se siguen los siguientes pasos:
Comprenda esto con el siguiente ejemplo
Referencias: https://es5.github.io/x15.2.html#x15.2.4.2 https://es5.github.io/x9.html#x9.9 https://javascriptweblog.wordpress.com/ 2010/09/27 / la-vida-secreta-de-las-primitivas-javascript /
fuente
[object Object]
es la representación de cadena predeterminada de un JavaScriptObject
. Es lo que obtendrá si ejecuta este código:Puede cambiar la representación predeterminada anulando el
toString
método así:fuente
[object Object]
vino la cuerda.Tienes un objeto javascript
$1
y$2
son objetos jquery, tal vez se usenalert($1.text());
para obtener texto oalert($1.attr('id');
etc.tienes que tratar
$1
y$2
gustar los objetos jQuery.fuente
Estás intentando devolver un objeto. Debido a que no existe una buena forma de representar un objeto como una cadena, el
.toString()
valor del objeto se establece automáticamente como"[object Object]"
.fuente