返回的对象内容[object Object]

时间:2016-08-17 01:17:21

标签: javascript jquery json object

尝试从我的对象数组中获取文本内容。

var array = [

    first = {
        name: 'first',
        color: 'red',
    },

    second = {
        name: 'second',
        color: 'green',
    },

    third = {
        name: 'third',
        color: 'blue',
    },
];

$('.first').text(first);
$('.second').text(second);
$('.third').text(third);

但我得到了:

[object Object]

似乎无法在任何地方找到答案,我错过了一些明显的东西吗?

codepen demo

2 个答案:

答案 0 :(得分:0)

您正在调用JSON对象。您可以使用点符号抓取对象中的内容,如:

Codepen - dot notation

$('.first').text(first.name + first.color);
$('.second').text(second.name + second.color);
$('.third').text(third.name + third.color);

如果您确实要打印出对象,可以使用JSON.stringify(),如:

Codepen - JSON.Stringify()

$('.first').text(JSON.stringify(first));
$('.second').text(JSON.stringify(second));
$('.third').text(JSON.stringify(third));

答案 1 :(得分:0)

首先,如果设置了"use strict"模式,代码将会中断,因为您正在隐式创建全局变量。

其次,当您调用方法.text()并设置值时,它需要stringfunction值,然后在这种情况下调用方法toString()对于返回first, second, third的对象"[object Object]"隐式,其中Object是对象类型。

现在,创建数组的正确方法是:

var list = [
  { name: "first", color: "red" },
  { name: "second", color: "green" }
];

或创建变量:

var first = { name: "first", color: "red" };
var second = { name: "second", color: "green" };
var list = [first, second];

现在我们有了JavaScript对象,我们可以创建JSON字符串,以便将它们传递给.text()方法。

$(".first").text(JSON.stringify(list[0]));
// Or...
$(".first").text(JSON.stringify(first));

PD:您也可以override the methods toString() and valueOf(),但这种方法更多是OOP。