为什么我的对象显示为" [object Object]"?

时间:2011-11-05 18:26:14

标签: javascript

我试图按年龄对一系列记录进行冒泡,但我得到的只是:

  

[object Object],[object Object],[object Object]

如何让它显示记录的值?

students = [
    {name: "timothy", age: "9"},
    {name: "claire",  age: "12"},
    {name: "michael", age: "20"}
];

for (var i = 0; i < students.length; i++) {
    for (var j = i + 1; j < students.length; j++) {
        if (Number(students[i].age) > Number(students[j].age)) {
            tempValue = students[j].age;
            students[j].age = students[i].age;
            students[i].age = tempValue;
        }
    }
}

alert(students);

2 个答案:

答案 0 :(得分:10)

默认情况下,JavaScript中的所有对象在转换为字符串时都会变为"[object Object]"(与alert()的情况一样)。

您可以尝试:

  • 使用console.log或调试器检查数组(而不是使用alert())

    console.log(students);
    //Open your browser's developer tools to see the console.
    //Try F12, ctrl+shift+J or ctrl+shift+I as shortcuts
    
  • 使用JSON.stringify功能序列化对象。

    JSON.stringify({a:1});
    //yields '{"a":1}'
    
  • 为对象提供自定义toString方法

    var x = {
        a : 17,
        toString: function(){
            return 'I have a ' + this.a;
        }
    };
    alert(x); //gives "I have a 17"
    

答案 1 :(得分:1)

在支持的浏览器中,您可以提醒或记录JSON字符串表示形式:

alert(JSON.stringify(students));