javascript - [object 对象] 是什么意思?

标签 javascript jquery object

我试图提醒一个函数的返回值,我在提醒中得到了这个:

[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 是我要检查的函数。

最佳答案

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

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

  • 函数对象:
    stringify(function (){}) -> [对象函数]
  • 数组对象:
    stringify([]) -> [对象数组]
  • 正则表达式对象
    stringify(/x/) -> [对象正则表达式]
  • 日期对象
    stringify(new Date) -> [对象日期]
  • several more ……
  • 对象对象!
    stringify({}) -> [对象对象]

那是因为构造函数被称为Object(大写“O”),术语“object”(小写“o”)指的是事物的结构性质。

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

stringify 应该是这样的:

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

关于javascript - [object 对象] 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4750225/

相关文章:

javascript - Angular 1/JavaScript 删除属性对象,就好像它从未存在过一样

javascript - 当一个元素被拖动时,拖动类的所有元素(jQuery UI Draggable)

javascript - 是否可以(使用 Meteor)控制何时将发布推送到订阅的客户端?

javascript - 如何使数据表按标签搜索

javascript - js.erb 不执行 javascript 但已处理 rails

javascript - 微调性能时,多次调用 JavaScript 方法的最佳方式是什么?

javascript - displayDiv.fadeIn ('3000' );不会在这个网页上慢慢消失

javascript - 无法在 Chart.js 时间轴上显示正确的时间

jquery - Zepto 更好的条件负载测试

c++ - Lua 5.2 - 对象中的 C++ 对象(使用 lua_lightuserdata)