[对象对象]是什么意思?

2022-08-30 01:51:34

我正在尝试从函数中发出警报返回值,并在警报中得到这个:

[object Object]  

这是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是我试图检查的功能。


答案 1

正如其他人所指出的,这是对象的默认序列化。但是为什么是它,而不仅仅是?[object Object][object]

这是因为Javascript中有不同类型的对象!

  • 函数对象
    stringify(function (){}) -> [object Function]
  • 数组对象
    stringify([]) -> [object Array]
  • 正则表达式对象
    stringify(/x/) -> [object RegExp]
  • 日期对象
    stringify(new Date) -> [object Date]
  • ...还有几个...
  • 对象对象
    stringify({}) -> [object Object]

这是因为构造函数被调用(大写“O”),而术语“对象”(带有小“o”)指的是事物的结构性质。Object

通常,当你在Javascript中谈论“对象”时,你实际上指的是对象对象”,而不是其他类型的对象。

其中 stringify 应如下所示:

function stringify (x) {
    console.log(Object.prototype.toString.call(x));
}


答案 2

从对象到字符串的默认转换是 。"[object Object]"

当您处理jQuery对象时,您可能希望这样做

alert(whichIsVisible()[0].id);

以打印元素的 ID。

如注释中所述,您应该使用Firefox或Chrome等浏览器中包含的工具来内省对象,而不是。console.log(whichIsVisible())alert

附注:ID 不应以数字开头。