Javascript函数返回'[object Object]'而不是hash

时间:2012-06-14 14:44:15

标签: javascript function hash

我有一个选择输入名称部分的功能:

  function getNameParts(list) {
    first_name = list[0];
    middle_name = "";
    last_name = list[1];
    if(list.length > 2) {
      middle_name = list[1];
      last_name = list[2];
    }
    names = {"first": first_name, "middle": middle_name, "last": last_name};
    console.log("names", names)
    return names
  }

控制台声明names是此函数中的哈希值。

但是当我像这样使用这个函数时:

name = getNameParts($("#person_name").val().split(' '));
console.log("name", name)

name是一个字符串“[object Object]”

这是怎么回事?

6 个答案:

答案 0 :(得分:1)

它真的是一个字符串吗?从函数返回一个对象。

尝试以下示例:

name = getNameParts($("#person_name").val().split(' '));
console.log("first", name.first);
console.log("middle", name.middle);
console.log("last", name.last);

您可以访问每个属性值。当您尝试将整个对象解析为字符串时,它会返回“[object Object]”,如预期的那样。

答案 1 :(得分:1)

尝试这个;

function getNameParts(list) {
    var first_name = list[0];
   var middle_name = "";
    var last_name = list[1];
    if(list.length > 2) {
      middle_name = list[1];
      last_name = list[2];
    }
    var names = {"first": first_name, "middle": middle_name, "last": last_name};
    console.log("names", names)
    return names
  }

///声明名称变量

var name = getNameParts($("#person_name").val().split(' '));
console.log("name", name)

答案 2 :(得分:1)

使用JSON.stringify()

console.log('names', JSON.stringify(names));

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

答案 3 :(得分:0)

name不是字符串。它是一个对象,所以当你在控制台中记录这个值而不是理想地显示对象的内容时,它会显示它的类型是控制台。

要验证这一点,您可以记录names.first或其中的任何其他属性

答案 4 :(得分:0)

name是一个对象,但是当您使用特定于供应商的console.log函数时,它可能会尝试将其参数强制转换为字符串,具体取决于此特定环境程序员如何实现它。 Object的默认stringification method将返回[object Object],这正是您所获得的。

答案 5 :(得分:0)

看看这个,似乎工作得很好:

 $(document).ready(function() {
      function getNameParts(list) {
            var first_name = list[0],
                middle_name = "",
                last_name = list[1],
                names;

            if(list.length > 2) {
                middle_name = list[1];
                last_name = list[2];
            }
            names = {"first": first_name, "middle": middle_name, "last": last_name};
            console.log(names)
            return names;
        }

        var testString = "aaa bbb ccc";
        var name = getNameParts(testString.split(' '));
        console.log(name);

        console.log(name.first + " " + name.middle + " " + name.last);

   });

当你执行console.log时,如果你执行console.log(“name”+ names)并且名称是一个对象,它将显示[object object]的名称类型而不是它的内容。对于字符串和数字,可以这样做。