将多个对象传递给构造函数

时间:2014-02-04 22:45:21

标签: javascript

我有一个构造函数,用于将新数据推送到数组(在本例中为allEntries

function entry (title, info) {
    this.title = title;
    this.info = [ { name : info } ];
}
var allEntries = []

我正在试图弄清楚如何为this.info传递多个对象,例如:

allEntries.push( new entry( 'title one', ['info 1', 'info 2'] ) );

为了获得类似的东西:

{
    title: 'title one', 
    info : [
            { name: 'info 1'},
            { name: 'info 2'}
        ]
}

我将如何做到这一点?

2 个答案:

答案 0 :(得分:2)

传递一个数组并迭代它以使用Array.prototype.forEach添加所有项目。

function entry (title, info) {
    this.title = title;
    this.info = [];
    info.forEach(function (infoItem) {
        this.info.push({ name : infoItem});
    }, this);
}

这样称呼:

var myEntry = new entry('foobar', ['info1', 'info2']);

顺便说一句:通常,类在前面用大写字母命名,以便能够将它们与函数(总是小写)区分开来,因此你想要将它命名为“Entry”。

答案 1 :(得分:0)

这可以通过不同的方式来解决......

http://jsfiddle.net/MattLo/Nz6BD/

function entry () {
    this.title = null;
    this.info = [];
}

entry.prototype.setInfo = function (info) {
    this.info.push({name: info});

    return this;
};

entry.prototype.setTitle = function (title) {
    this.title = title;

    return this;
}

var e1 = (new entry)
    .setInfo('foo')
    .setInfo('bar')
    .setTitle('Hello World!');