直接将[]添加到对象意味着什么?

时间:2015-07-20 17:46:51

标签: javascript

我正在读一本名为Eloquent Javascript的书。

在第6章中,我发现了一个我无法理解的语法,[ ]可以直接添加到对象中。

这种用法意味着什么?

function UnderlinedCell(inner) {
    this.inner = inner;
};
UnderlinedCell.prototype.minWidth = function() {
    return this.inner.minWidth();
};
UnderlinedCell.prototype.minHeight = function() {
    return this.inner.minHeight() + 1;
};
UnderlinedCell.prototype.draw = function(width, height) {
    return this.inner.draw(width, height - 1)
    .concat([repeat("-", width)]);
};

function dataTable(data) {
    var keys = Object.keys(data[0]);
    var headers = keys.map(function(name) {
    return new UnderlinedCell(new TextCell(name));
    });
    var body = data.map(function(row) {
        return keys.map(function(name) {
            return new TextCell(String(row[name]));
        });
    });
    return [headers].concat(body);
}

2 个答案:

答案 0 :(得分:1)

Model放在变量周围只是意味着创建一个元素是该变量的数组。然后可以使用

[]

相当于:

return [headers].concat(body);

该函数正在做的是返回一个数组,其第一个元素是标题行,其余元素是var array = []; array[0] = headers; var new_array = array.concat(body); return new_array; 中的每个数据行。

答案 1 :(得分:0)

使用行return [headers].concat(body);,您可以说变量"标题"是一个数组。这样你可以调用它上面的concat()函数。 您通常不需要括号,但在这种情况下,您希望连接数组" header"和"身体"进入一个新阵列"标题"。

希望我能回答你的问题。