<p>我正在尝试从一个函数中弹出一个返回值,而在弹出框中我得到的是:</p>
<pre class="brush:none;toolbar:false;">[object Object]
</pre>
<p>这是JavaScript代码:</p>
<pre class="brush:html;toolbar:false;"><script type="text/javascript">
$(function ()
{
var $main = $('#main'),
$1 = $('#1'),
$2 = $('#2');
$2.hide(); // 页面加载时隐藏 div#2
$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>
</pre>
<p><code>whichIsVisible</code> 是我正在尝试检查的函数。</p>
正如其他人所指出的那样,这是对象的默认序列化。但为什么它是
[object Object]而不仅仅是[object]呢?那是因为在Javascript中有不同类型的对象!
stringify(function (){})->[object Function]stringify([])->[object Array]stringify(/x/)->[object RegExp]stringify(new Date)->[object Date]stringify({})->[object Object]这是因为构造函数被称为
Object(大写的“O”),而术语“object”(小写的“o”)指的是事物的结构性质。通常,在Javascript中谈论“对象”时,实际上是指“对象对象”,而不是其他类型。
其中
stringify应该是这样的:function stringify (x) { console.log(Object.prototype.toString.call(x)); }将对象转换为字符串的默认结果是
"[object Object]"。由于您正在处理jQuery对象,您可能希望执行以下操作
以打印元素的ID。
如评论中所提到的,您应该使用Firefox或Chrome等浏览器中包含的工具来检查对象,而不是使用
alert,方法是执行console.log(whichIsVisible())。附注:ID不应以数字开头。