I am trying to alert
a returned value from a function and I get this in the alert:
[object Object]
Here is the JavaScript code:
<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
is the function which I am trying to check on.
ベストアンサー1
As others have noted, this is the default serialisation of an object. But why is it [object Object]
and not just [object]
?
That is because there are different types of objects in Javascript!
- Function objects:
stringify(function (){})
->[object Function]
- Array objects:
stringify([])
->[object Array]
- RegExp objects
stringify(/x/)
->[object RegExp]
- Date objects
stringify(new Date)
->[object Date]
- … several more …
- and Object objects!
stringify({})
->[object Object]
That's because the constructor function is called Object
(with a capital "O"), and the term "object" (with small "o") refers to the structural nature of the thingy.
Usually, when you're talking about "objects" in Javascript, you actually mean "Object objects", and not the other types.
where stringify
should look like this:
function stringify (x) {
console.log(Object.prototype.toString.call(x));
}